diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubClientBuilder.java b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubClientBuilder.java
index ec959b903ac02..7e9bde9251ae7 100644
--- a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubClientBuilder.java
+++ b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubClientBuilder.java
@@ -20,6 +20,8 @@
import com.azure.core.annotation.ServiceClientBuilder;
import com.azure.core.annotation.ServiceClientProtocol;
import com.azure.core.credential.TokenCredential;
+import com.azure.core.credential.AzureNamedKeyCredential;
+import com.azure.core.credential.AzureSasCredential;
import com.azure.core.exception.AzureException;
import com.azure.core.util.ClientOptions;
import com.azure.core.util.Configuration;
@@ -340,6 +342,77 @@ public EventHubClientBuilder credential(String fullyQualifiedNamespace, String e
return this;
}
+ /**
+ * Sets the credential information for which Event Hub instance to connect to, and how to authorize against it.
+ *
+ * @param fullyQualifiedNamespace The fully qualified name for the Event Hubs namespace. This is likely to be
+ * similar to {@literal "{your-namespace}.servicebus.windows.net}".
+ * @param eventHubName The name of the Event Hub to connect the client to.
+ * @param credential The shared access name and key credential to use for authorization.
+ * Access controls may be specified by the Event Hubs namespace or the requested Event Hub,
+ * depending on Azure configuration.
+ *
+ * @return The updated {@link EventHubClientBuilder} object.
+ * @throws IllegalArgumentException if {@code fullyQualifiedNamespace} or {@code eventHubName} is an empty
+ * string.
+ * @throws NullPointerException if {@code fullyQualifiedNamespace}, {@code eventHubName}, {@code credentials} is
+ * null.
+ */
+ public EventHubClientBuilder credential(String fullyQualifiedNamespace, String eventHubName,
+ AzureNamedKeyCredential credential) {
+
+ this.fullyQualifiedNamespace = Objects.requireNonNull(fullyQualifiedNamespace,
+ "'fullyQualifiedNamespace' cannot be null.");
+ this.eventHubName = Objects.requireNonNull(eventHubName, "'eventHubName' cannot be null.");
+
+ if (CoreUtils.isNullOrEmpty(fullyQualifiedNamespace)) {
+ throw logger.logExceptionAsError(new IllegalArgumentException("'host' cannot be an empty string."));
+ } else if (CoreUtils.isNullOrEmpty(eventHubName)) {
+ throw logger.logExceptionAsError(new IllegalArgumentException("'eventHubName' cannot be an empty string."));
+ }
+
+ Objects.requireNonNull(credential, "'credential' cannot be null.");
+ this.credentials = new EventHubSharedKeyCredential(credential.getAzureNamedKey().getName(),
+ credential.getAzureNamedKey().getKey(), ClientConstants.TOKEN_VALIDITY);
+
+ return this;
+ }
+
+ /**
+ * Sets the credential information for which Event Hub instance to connect to, and how to authorize against it.
+ *
+ * @param fullyQualifiedNamespace The fully qualified name for the Event Hubs namespace. This is likely to be
+ * similar to {@literal "{your-namespace}.servicebus.windows.net}".
+ * @param eventHubName The name of the Event Hub to connect the client to.
+ * @param credential The shared access signature credential to use for authorization.
+ * Access controls may be specified by the Event Hubs namespace or the requested Event Hub,
+ * depending on Azure configuration.
+ *
+ * @return The updated {@link EventHubClientBuilder} object.
+ * @throws IllegalArgumentException if {@code fullyQualifiedNamespace} or {@code eventHubName} is an empty
+ * string.
+ * @throws NullPointerException if {@code fullyQualifiedNamespace}, {@code eventHubName}, {@code credentials} is
+ * null.
+ */
+ public EventHubClientBuilder credential(String fullyQualifiedNamespace, String eventHubName,
+ AzureSasCredential credential) {
+
+ this.fullyQualifiedNamespace = Objects.requireNonNull(fullyQualifiedNamespace,
+ "'fullyQualifiedNamespace' cannot be null.");
+ this.eventHubName = Objects.requireNonNull(eventHubName, "'eventHubName' cannot be null.");
+
+ if (CoreUtils.isNullOrEmpty(fullyQualifiedNamespace)) {
+ throw logger.logExceptionAsError(new IllegalArgumentException("'host' cannot be an empty string."));
+ } else if (CoreUtils.isNullOrEmpty(eventHubName)) {
+ throw logger.logExceptionAsError(new IllegalArgumentException("'eventHubName' cannot be an empty string."));
+ }
+
+ Objects.requireNonNull(credential, "'credential' cannot be null.");
+ this.credentials = new EventHubSharedKeyCredential(credential.getSignature());
+
+ return this;
+ }
+
/**
* Sets the proxy configuration to use for {@link EventHubAsyncClient}. When a proxy is configured, {@link
* AmqpTransportType#AMQP_WEB_SOCKETS} must be used for the transport type.
diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/samples/java/com/azure/messaging/eventhubs/IoTHubConnectionSample.java b/sdk/eventhubs/azure-messaging-eventhubs/src/samples/java/com/azure/messaging/eventhubs/IoTHubConnectionSample.java
new file mode 100644
index 0000000000000..89097b67a56b8
--- /dev/null
+++ b/sdk/eventhubs/azure-messaging-eventhubs/src/samples/java/com/azure/messaging/eventhubs/IoTHubConnectionSample.java
@@ -0,0 +1,535 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+package com.azure.messaging.eventhubs;
+
+import com.azure.core.amqp.exception.AmqpErrorCondition;
+import com.azure.core.amqp.exception.AmqpErrorContext;
+import com.azure.core.amqp.exception.AmqpException;
+import com.azure.core.credential.AccessToken;
+import com.azure.core.util.AsyncCloseable;
+import org.apache.qpid.proton.Proton;
+import org.apache.qpid.proton.amqp.Symbol;
+import org.apache.qpid.proton.amqp.messaging.Source;
+import org.apache.qpid.proton.amqp.messaging.Target;
+import org.apache.qpid.proton.amqp.transport.ErrorCondition;
+import org.apache.qpid.proton.amqp.transport.ReceiverSettleMode;
+import org.apache.qpid.proton.amqp.transport.SenderSettleMode;
+import org.apache.qpid.proton.engine.BaseHandler;
+import org.apache.qpid.proton.engine.Connection;
+import org.apache.qpid.proton.engine.EndpointState;
+import org.apache.qpid.proton.engine.Event;
+import org.apache.qpid.proton.engine.Link;
+import org.apache.qpid.proton.engine.Receiver;
+import org.apache.qpid.proton.engine.Sasl;
+import org.apache.qpid.proton.engine.Session;
+import org.apache.qpid.proton.engine.SslDomain;
+import org.apache.qpid.proton.engine.SslPeerDetails;
+import org.apache.qpid.proton.engine.Transport;
+import org.apache.qpid.proton.reactor.Reactor;
+import reactor.core.publisher.Mono;
+import reactor.core.publisher.Sinks;
+import reactor.core.scheduler.Schedulers;
+
+import javax.crypto.Mac;
+import javax.crypto.spec.SecretKeySpec;
+import javax.net.ssl.SSLContext;
+import java.io.IOException;
+import java.io.UncheckedIOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URLEncoder;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.time.Duration;
+import java.time.OffsetDateTime;
+import java.time.ZoneOffset;
+import java.util.Base64;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Objects;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.stream.Collectors;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+
+/**
+ * This sample demonstrates how to convert an IoT Hub connection string to an Event Hubs connection string that points
+ * to the built-in messaging endpoint. The Event Hubs connection string is then used with the EventHubConsumerClient to
+ * receive events.
+ *
+ * More information about the built-in messaging endpoint can be found at:
+ * Read device-to-cloud
+ * messages from the built-in endpoint
+ *
+ * @see Generating
+ * security tokens.
+ */
+public final class IoTHubConnectionSample {
+
+ /**
+ * Main method for sample.
+ *
+ * @param args Unused arguments.
+ *
+ * @throws IOException IOException if we could not open the reactor IO pipe.
+ */
+ public static void main(String[] args) throws IOException {
+ // The IoT Hub connection string from the portal. Will look like:
+ final String iotHubConnectionString =
+ "HostName=.azure-devices.net;SharedAccessKeyName=;SharedAccessKey=";
+
+ // Gets the Event Hubs connection string for this IoT hub.
+ // Cache the result of this operation so additional downstream subscribers can make use of the value
+ // instead of us having to create another reactor.
+ final Mono connectionStringMono = getConnectionString(iotHubConnectionString)
+ .cache();
+
+ // Leverage Mono.usingWhen so the producer client is disposed of after we finish using it.
+ // In production, users would probably cache the Mono's result, reusing the EventHubProducerAsyncClient and
+ // finally closing it.
+ final Mono runOperation = Mono.usingWhen(
+ connectionStringMono.map(connectionString -> {
+ System.out.println("Acquired Event Hubs compatible connection string.");
+
+ return new EventHubClientBuilder()
+ .connectionString(connectionString)
+ .buildAsyncProducerClient();
+ }),
+ producer -> {
+ System.out.println("Created producer client.");
+
+ return producer.getEventHubProperties();
+ },
+ producer -> Mono.fromRunnable(() -> {
+ System.out.println("Disposing of producer client.");
+ producer.close();
+ }));
+
+ // Blocking here to turn this into a synchronous operation because we no longer need asynchronous operations.
+ final EventHubProperties eventHubProperties = runOperation.block();
+ if (eventHubProperties == null) {
+ System.err.println("No properties were retrieved.");
+ return;
+ }
+
+ final String partitionIds = eventHubProperties.getPartitionIds()
+ .stream()
+ .collect(Collectors.joining(", "));
+
+ System.out.printf("Event Hub Name: [%s]. Created At: %s. partitionIds: [%s]%n", eventHubProperties.getName(),
+ eventHubProperties.getCreatedAt(), partitionIds);
+ }
+
+ /**
+ * Mono that completes with the corresponding Event Hubs connection string.
+ *
+ * @param iotHubConnectionString The IoT Hub connection string. In the format: "{@code
+ * HostName=.azure-devices.net;SharedAccessKeyName=;SharedAccessKey=}".
+ *
+ * @return A Mono that completes when the connection string is retrieved. Or errors if the transport, connection, or
+ * link could not be opened.
+ *
+ * @throws IllegalArgumentException If the connection string could not be parsed or the shared access key is
+ * invalid.
+ * @throws NullPointerException if the connection string was null or one of the IoT connection string components
+ * is null.
+ * @throws UnsupportedOperationException if the hashing algorithm could not be instantiated.
+ * @throws UncheckedIOException if proton-j could not be started.
+ */
+ private static Mono getConnectionString(String iotHubConnectionString) {
+ final IoTConnectionStringProperties properties;
+ try {
+ properties = new IoTConnectionStringProperties(iotHubConnectionString);
+ } catch (IllegalArgumentException | NullPointerException error) {
+ return Mono.error(error);
+ }
+
+ final String entityPath = "messages/events";
+ final String username = properties.getSharedAccessKeyName() + "@sas.root." + properties.getIoTHubName();
+ final String resource = properties.getHostname() + "/" + entityPath;
+ final AccessToken accessToken;
+ try {
+ accessToken = generateSharedAccessSignature(properties.getSharedAccessKeyName(),
+ properties.getSharedAccessKey(), resource, Duration.ofMinutes(10));
+ } catch (UnsupportedOperationException | IllegalArgumentException | UnsupportedEncodingException error) {
+ return Mono.error(error);
+ }
+
+ final Reactor reactor;
+ try {
+ reactor = Proton.reactor();
+ } catch (IOException e) {
+ return Mono.error(new UncheckedIOException("Unable to create IO pipe for proton-j reactor.", e));
+ }
+
+ // Leverage Mono.usingWhen to dispose of the resources after we finish using them.
+ return Mono.usingWhen(
+ Mono.fromCallable(() -> {
+ final ProtonJHandler handler = new ProtonJHandler("iot-connection-id", properties.getHostname(),
+ username, accessToken);
+
+ reactor.setHandler(handler);
+
+ // reactor.run() is a blocking call, so we schedule this on another thread. It'll stop processing items
+ // when we call reactor.stop() later on.
+ Schedulers.boundedElastic().schedule(() -> reactor.run());
+
+ return handler;
+ }),
+ handler -> {
+ // Creating a receiver will trigger the amqp:link:redirect error containing the Event Hubs connection
+ // string in its error properties.
+ return handler.getReceiver(entityPath + "/$management")
+ .map(receiver -> {
+ System.out.println("IoTHub string was compatible with Event Hubs. Did not redirect.");
+ return properties.getRawConnectionString();
+ })
+ // Only recover on AMQP Exceptions that have the amqp:link:redirect error.
+ // Other errors are propagated downstream.
+ .onErrorResume(error -> {
+ return error instanceof AmqpException
+ && ((AmqpException) error).getErrorCondition() == AmqpErrorCondition.LINK_REDIRECT;
+ }, error -> {
+ final AmqpException amqpException = (AmqpException) error;
+ final Map errorInfo = amqpException.getContext().getErrorInfo();
+ final String eventHubsHostname = (String) errorInfo.get("hostname");
+
+ if (eventHubsHostname == null) {
+ return Mono.error(new UnsupportedOperationException(
+ "Could not get Event Hubs connection string from error info.", error));
+ }
+
+ final String eventHubsConnection = String.format(Locale.ROOT,
+ "Endpoint=sb://%s/;EntityPath=%s;SharedAccessKeyName=%s;SharedAccessKey=%s",
+ eventHubsHostname, properties.getIoTHubName(), properties.getSharedAccessKeyName(),
+ properties.getSharedAccessKey());
+
+ return Mono.just(eventHubsConnection);
+ });
+ },
+ handler -> {
+ // After we're done fetching a compatible Event Hubs connection string, stop the reactor.
+ reactor.stop();
+ return handler.closeAsync();
+ });
+ }
+
+ private static class ProtonJHandler extends BaseHandler implements AsyncCloseable {
+ private static final int PORT = 5671;
+
+ private final String hostname;
+ private final String username;
+ private final AccessToken token;
+ private final String connectionId;
+ private final Sinks.One connectionSink = Sinks.one();
+ private final ConcurrentMap> receiverSinks = new ConcurrentHashMap<>();
+
+ ProtonJHandler(String connectionId, String hostname, String username, AccessToken token) {
+ this.connectionId = connectionId;
+ this.hostname = hostname;
+ this.username = username;
+ this.token = token;
+ }
+
+ /**
+ * Gets an active connection. Completes with an error if the connection could not be opened.
+ *
+ * @return An active connection. Completes with an error if the connection could not be opened.
+ */
+ Mono getConnection() {
+ return connectionSink.asMono().cache();
+ }
+
+ Mono getReceiver(String entityPath) {
+ System.out.println("Creating receiver: " + entityPath);
+ return getConnection().flatMap(activeConnection -> {
+ final Sinks.One receiverSink = receiverSinks.computeIfAbsent(entityPath, key -> {
+ final Session session = activeConnection.session();
+ final Receiver receiver = session.receiver("receiver " + entityPath);
+ final Source source = new Source();
+ source.setAddress(entityPath);
+ receiver.setSource(source);
+
+ receiver.setTarget(new Target());
+ receiver.setSenderSettleMode(SenderSettleMode.SETTLED);
+ receiver.setReceiverSettleMode(ReceiverSettleMode.SECOND);
+
+ session.open();
+ receiver.open();
+
+ return Sinks.one();
+ });
+
+ return receiverSink.asMono();
+ });
+ }
+
+ @Override
+ public void onLinkRemoteOpen(Event e) {
+ final Receiver link = e.getReceiver();
+ if (link == null) {
+ System.out.printf("Was expecting a receiver. Did not get one. Type: %s. Name: %s%n", e.getLink(),
+ e.getLink().getName());
+ return;
+ }
+
+ if (link.getCondition() != null) {
+ // There will be an error soon. Not completing receiver.
+ return;
+ } else if (link.getRemoteState() != EndpointState.ACTIVE) {
+ // The link isn't active, don't complete sink yet.
+ System.out.println(link.getRemoteState() + ": Remote state is not open. " + link.getCondition());
+ return;
+ }
+
+ final String entityPath = link.getSource().getAddress();
+ final Sinks.One sink = receiverSinks.remove(entityPath);
+ if (sink != null) {
+ sink.emitValue(e.getReceiver(), Sinks.EmitFailureHandler.FAIL_FAST);
+ } else {
+ System.err.printf("There was no corresponding receiver '%s' sink. Closing link.%n", entityPath);
+ link.close();
+ }
+ }
+
+ @Override
+ public void onLinkRemoteClose(Event e) {
+ final Link link = e.getLink();
+ final ErrorCondition remoteCondition = link.getRemoteCondition();
+ final AmqpErrorCondition errorCondition = AmqpErrorCondition.fromString(
+ remoteCondition.getCondition().toString());
+
+ @SuppressWarnings("unchecked") final Map errorInfo = remoteCondition.getInfo();
+ final Map errorInfoMap = errorInfo != null
+ ? errorInfo.entrySet().stream().collect(HashMap::new,
+ (existing, entry) -> existing.put(entry.getKey().toString(), entry.getValue()), (HashMap::putAll))
+ : Collections.emptyMap();
+
+ final AmqpErrorContext context = new AmqpErrorContext(hostname, errorInfoMap);
+ final AmqpException exception = new AmqpException(false, errorCondition, remoteCondition.getDescription(),
+ context);
+
+ final String entityPath = link.getSource().getAddress();
+ final Sinks.One sink = receiverSinks.remove(entityPath);
+ if (sink != null) {
+ sink.emitError(exception, Sinks.EmitFailureHandler.FAIL_FAST);
+ } else {
+ System.err.printf("There was no corresponding receiver '%s' sink. Closing link.%n", entityPath);
+ link.close();
+ }
+ }
+
+ @Override
+ public void onConnectionBound(Event e) {
+ final Transport transport = e.getTransport();
+ final Sasl sasl = transport.sasl();
+ sasl.plain(username, token.getToken());
+
+ final SslDomain sslDomain = Proton.sslDomain();
+ sslDomain.init(SslDomain.Mode.CLIENT);
+
+ try {
+ sslDomain.setSslContext(SSLContext.getDefault());
+ } catch (NoSuchAlgorithmException error) {
+ connectionSink.emitError(new RuntimeException("Could not bind SslContext.", error),
+ Sinks.EmitFailureHandler.FAIL_FAST);
+ }
+
+ final SslPeerDetails peerDetails = Proton.sslPeerDetails(hostname, PORT);
+ transport.ssl(sslDomain, peerDetails);
+ }
+
+ @Override
+ public void onConnectionInit(Event e) {
+ final Connection connection = e.getConnection();
+ connection.setHostname(hostname);
+ connection.setContainer(connectionId);
+
+ final Map properties = new HashMap<>();
+ connection.setProperties(properties);
+ connection.open();
+ }
+
+ @Override
+ public void onConnectionRemoteOpen(Event e) {
+ System.out.println("Connection state: " + e.getConnection().getRemoteState());
+ final Connection connection = e.getConnection();
+ connectionSink.emitValue(connection, Sinks.EmitFailureHandler.FAIL_FAST);
+ }
+
+ @Override
+ public void onReactorInit(Event e) {
+ e.getReactor().connectionToHost(hostname, PORT, this);
+ }
+
+ @Override
+ public void onTransportError(Event event) {
+ final AmqpErrorContext context = new AmqpErrorContext(hostname);
+ ErrorCondition condition = event.getTransport().getCondition();
+ if (condition != null) {
+ final AmqpException exception = new AmqpException(false,
+ AmqpErrorCondition.fromString(condition.getCondition().toString()), condition.getDescription(),
+ context);
+
+ connectionSink.emitError(exception, Sinks.EmitFailureHandler.FAIL_FAST);
+ } else {
+ connectionSink.emitError(new AmqpException(false, "Error (no description returned).", context),
+ Sinks.EmitFailureHandler.FAIL_FAST);
+ }
+ }
+
+ @Override
+ public Mono closeAsync() {
+ return connectionSink
+ .asMono()
+ .flatMap(connection -> Mono.fromRunnable(() -> connection.close()));
+ }
+ }
+
+ /**
+ * Generates a shared access signature. Details for generating security tokens can be found at:
+ * Security
+ * tokens
+ *
+ * @param policyName Name of the shared access key policy.
+ * @param sharedAccessKey Value of the shared access key.
+ * @param resourceUri URI of the resource to access. Does not have the scheme in it.
+ * @param tokenDuration Duration of the token.
+ *
+ * @return An access token.
+ */
+ private static AccessToken generateSharedAccessSignature(String policyName, String sharedAccessKey,
+ String resourceUri, Duration tokenDuration) throws UnsupportedEncodingException {
+
+ final OffsetDateTime expiresOn = OffsetDateTime.now(ZoneOffset.UTC).plus(tokenDuration);
+
+ final String utf8Encoding = UTF_8.name();
+ final String expiresOnEpochSeconds = Long.toString(expiresOn.toEpochSecond());
+ final String stringToSign = URLEncoder.encode(resourceUri, utf8Encoding) + "\n" + expiresOnEpochSeconds;
+ final byte[] decodedKey = Base64.getDecoder().decode(sharedAccessKey);
+
+ final Mac sha256HMAC;
+ final SecretKeySpec secretKey;
+ final String hmacSHA256 = "HmacSHA256";
+ try {
+ sha256HMAC = Mac.getInstance(hmacSHA256);
+ secretKey = new SecretKeySpec(decodedKey, hmacSHA256);
+ sha256HMAC.init(secretKey);
+ } catch (NoSuchAlgorithmException e) {
+ throw new UnsupportedOperationException(
+ String.format("Unable to create hashing algorithm '%s'", hmacSHA256), e);
+ } catch (InvalidKeyException e) {
+ throw new IllegalArgumentException("'sharedAccessKey' is an invalid value for the hashing algorithm.", e);
+ }
+
+ final byte[] bytes = sha256HMAC.doFinal(stringToSign.getBytes(UTF_8));
+ final String signature = new String(Base64.getEncoder().encode(bytes), UTF_8);
+ final String token = String.format(Locale.ROOT, "SharedAccessSignature sr=%s&sig=%s&se=%s&skn=%s",
+ URLEncoder.encode(resourceUri, utf8Encoding),
+ URLEncoder.encode(signature, utf8Encoding),
+ expiresOnEpochSeconds, policyName);
+
+ return new AccessToken(token, expiresOn);
+ }
+
+ /**
+ * Contains properties from parsing an IoT connection string.
+ */
+ private static final class IoTConnectionStringProperties {
+ private static final String TOKEN_VALUE_SEPARATOR = "=";
+ private static final String TOKEN_VALUE_PAIR_DELIMITER = ";";
+ private static final String HOST_NAME = "HostName";
+ private static final String ENDPOINT = "Endpoint";
+ private static final String SHARED_ACCESS_KEY_NAME = "SharedAccessKeyName";
+ private static final String SHARED_ACCESS_KEY = "SharedAccessKey";
+ private final String endpoint;
+ private final String sharedAccessKeyName;
+ private final String sharedAccessKey;
+ private final String iotHubName;
+ private final String connectionString;
+
+ /**
+ * Parses an IoT Hub connection string into its components. Expects the string to be in format: {@code
+ * "HostName=.azure-devices.net;SharedAccessKeyName=;SharedAccessKey=}
+ *
+ * @param connectionString Connection string to parse.
+ *
+ * @throws IllegalArgumentException if the IoT Hub connection string does not have a valid URI endpoint. If
+ * there was not a valid key value pair in the connection string. Or the parameter name is unknown.
+ * @throws NullPointerException if there was no {@code endpoint}, {@code sharedAccessKey} or {@code
+ * sharedAccessKeyName} in the input string.
+ */
+ private IoTConnectionStringProperties(String connectionString) {
+ this.connectionString = Objects.requireNonNull(connectionString, "'connectionString' is null.");
+ URI endpointUri = null;
+ String sharedAccessKeyName = null;
+ String sharedAccessKeyValue = null;
+
+ for (String tokenValuePair : connectionString.split(TOKEN_VALUE_PAIR_DELIMITER)) {
+ final String[] pair = tokenValuePair.split(TOKEN_VALUE_SEPARATOR, 2);
+ if (pair.length != 2) {
+ throw new IllegalArgumentException(String.format(Locale.US,
+ "Connection string has invalid key value pair: %s", tokenValuePair));
+ }
+
+ final String key = pair[0].trim();
+ final String value = pair[1].trim();
+
+ if (key.equalsIgnoreCase(HOST_NAME) || key.equalsIgnoreCase(ENDPOINT)) {
+ try {
+ endpointUri = new URI(value);
+ } catch (URISyntaxException e) {
+ throw new IllegalArgumentException(
+ String.format(Locale.US, "Invalid endpoint: %s", tokenValuePair), e);
+ }
+ } else if (key.equalsIgnoreCase(SHARED_ACCESS_KEY_NAME)) {
+ sharedAccessKeyName = value;
+ } else if (key.equalsIgnoreCase(SHARED_ACCESS_KEY)) {
+ sharedAccessKeyValue = value;
+ } else {
+ throw new IllegalArgumentException(
+ String.format(Locale.US, "Illegal connection string parameter name: %s", key));
+ }
+ }
+
+ Objects.requireNonNull(endpointUri, "'endpointUri' IoT Hub connection string requires an endpoint.");
+
+ // If there is no scheme such as https:// or sb://, then the host will be null.
+ this.endpoint = endpointUri.getHost() != null ? endpointUri.getHost() : endpointUri.getPath();
+ this.sharedAccessKeyName = Objects.requireNonNull(sharedAccessKeyName, "'sharedAccessKeyName' IoTHub connection string requires a shared access key policy name.");
+ this.sharedAccessKey = Objects.requireNonNull(sharedAccessKeyValue, "'sharedAccessKeyValue' IoTHub connection string requires a shared access key value.");
+
+ final String[] split = this.endpoint.split("\\.");
+ if (split[0] == null) {
+ throw new IllegalArgumentException("Could not get the IoT hub name from: " + this.endpoint);
+ }
+
+ this.iotHubName = split[0];
+ }
+
+ private String getIoTHubName() {
+ return iotHubName;
+ }
+
+ private String getHostname() {
+ return endpoint;
+ }
+
+ private String getSharedAccessKeyName() {
+ return sharedAccessKeyName;
+ }
+
+ private String getSharedAccessKey() {
+ return sharedAccessKey;
+ }
+
+ private String getRawConnectionString() {
+ return connectionString;
+ }
+ }
+}
diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubClientBuilderTest.java b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubClientBuilderTest.java
index 65addbcff2936..7f252286d5a3d 100644
--- a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubClientBuilderTest.java
+++ b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubClientBuilderTest.java
@@ -6,25 +6,32 @@
import com.azure.core.amqp.AmqpTransportType;
import com.azure.core.amqp.ProxyAuthenticationType;
import com.azure.core.amqp.ProxyOptions;
+import com.azure.core.amqp.implementation.ConnectionStringProperties;
+import com.azure.core.credential.AzureNamedKeyCredential;
+import com.azure.core.credential.AzureSasCredential;
import com.azure.core.util.Configuration;
+import com.azure.core.util.logging.ClientLogger;
import com.azure.messaging.eventhubs.implementation.ClientConstants;
-import java.util.stream.Stream;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+import reactor.test.StepVerifier;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Locale;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.Arguments;
-import org.junit.jupiter.params.provider.MethodSource;
+import java.util.stream.Stream;
+import static java.nio.charset.StandardCharsets.UTF_8;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
-public class EventHubClientBuilderTest {
+public class EventHubClientBuilderTest extends IntegrationTestBase {
private static final String NAMESPACE_NAME = "dummyNamespaceName";
private static final String DEFAULT_DOMAIN_NAME = "servicebus.windows.net/";
@@ -40,6 +47,12 @@ public class EventHubClientBuilderTest {
ENDPOINT, SHARED_ACCESS_KEY_NAME, SHARED_ACCESS_KEY, EVENT_HUB_NAME);
private static final Proxy PROXY_ADDRESS = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(PROXY_HOST, Integer.parseInt(PROXY_PORT)));
+ private static final String TEST_CONTENTS = "SSLorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vehicula posuere lobortis. Aliquam finibus volutpat dolor, faucibus pellentesque ipsum bibendum vitae. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Ut sit amet urna hendrerit, dapibus justo a, sodales justo. Mauris finibus augue id pulvinar congue. Nam maximus luctus ipsum, at commodo ligula euismod ac. Phasellus vitae lacus sit amet diam porta placerat. \nUt sodales efficitur sapien ut posuere. Morbi sed tellus est. Proin eu erat purus. Proin massa nunc, condimentum id iaculis dignissim, consectetur et odio. Cras suscipit sem eu libero aliquam tincidunt. Nullam ut arcu suscipit, eleifend velit in, cursus libero. Ut eleifend facilisis odio sit amet feugiat. Phasellus at nunc sit amet elit sagittis commodo ac in nisi. Fusce vitae aliquam quam. Integer vel nibh euismod, tempus elit vitae, pharetra est. Duis vulputate enim a elementum dignissim. Morbi dictum enim id elit scelerisque, in elementum nulla pharetra. \nAenean aliquet aliquet condimentum. Proin dapibus dui id libero tempus feugiat. Sed commodo ligula a lectus mattis, vitae tincidunt velit auctor. Fusce quis semper dui. Phasellus eu efficitur sem. Ut non sem sit amet enim condimentum venenatis id dictum massa. Nullam sagittis lacus a neque sodales, et ultrices arcu mattis. Aliquam erat volutpat. \nAenean fringilla quam elit, id mattis purus vestibulum nec. Praesent porta eros in dapibus molestie. Vestibulum orci libero, tincidunt et turpis eget, condimentum lobortis enim. Fusce suscipit ante et mauris consequat cursus nec laoreet lorem. Maecenas in sollicitudin diam, non tincidunt purus. Nunc mauris purus, laoreet eget interdum vitae, placerat a sapien. In mi risus, blandit eu facilisis nec, molestie suscipit leo. Pellentesque molestie urna vitae dui faucibus bibendum. \nDonec quis ipsum ultricies, imperdiet ex vel, scelerisque eros. Ut at urna arcu. Vestibulum rutrum odio dolor, vitae cursus nunc pulvinar vel. Donec accumsan sapien in malesuada tempor. Maecenas in condimentum eros. Sed vestibulum facilisis massa a iaculis. Etiam et nibh felis. Donec maximus, sem quis vestibulum gravida, turpis risus congue dolor, pharetra tincidunt lectus nisi at velit.";
+
+ EventHubClientBuilderTest() {
+ super(new ClientLogger(EventHubClientBuilderTest.class));
+ }
+
@Test
public void missingConnectionString() {
final EventHubClientBuilder builder = new EventHubClientBuilder();
@@ -87,6 +100,7 @@ public void throwsWithProxyWhenTransportTypeNotChanged() {
assertNotNull(builder.buildAsyncClient());
});
}
+
@Test
public void testConnectionStringWithSas() {
@@ -125,6 +139,108 @@ public void testProxyOptionsConfiguration(String proxyConfiguration, boolean exp
Assertions.assertEquals(expectedClientCreation, clientCreated);
}
+ @Test
+ public void sendAndReceiveEventByAzureNameKeyCredential() {
+ ConnectionStringProperties properties = getConnectionStringProperties();
+ String fullyQualifiedNamespace = getFullyQualifiedDomainName();
+ String sharedAccessKeyName = properties.getSharedAccessKeyName();
+ String sharedAccessKey = properties.getSharedAccessKey();
+ String eventHubName = getEventHubName();
+
+ final EventData testData = new EventData(TEST_CONTENTS.getBytes(UTF_8));
+
+ EventHubProducerAsyncClient asyncProducerClient = new EventHubClientBuilder()
+ .credential(fullyQualifiedNamespace, eventHubName,
+ new AzureNamedKeyCredential(sharedAccessKeyName, sharedAccessKey))
+ .buildAsyncProducerClient();
+ try {
+ StepVerifier.create(
+ asyncProducerClient.createBatch().flatMap(batch -> {
+ assertTrue(batch.tryAdd(testData));
+ return asyncProducerClient.send(batch);
+ })
+ ).verifyComplete();
+ } finally {
+ asyncProducerClient.close();
+ }
+ }
+
+ @Test
+ public void sendAndReceiveEventByAzureSasCredential() {
+ ConnectionStringProperties properties = getConnectionStringProperties(true);
+ String fullyQualifiedNamespace = getFullyQualifiedDomainName();
+ String sharedAccessSignature = properties.getSharedAccessSignature();
+ String eventHubName = getEventHubName();
+
+ final EventData testData = new EventData(TEST_CONTENTS.getBytes(UTF_8));
+
+ EventHubProducerAsyncClient asyncProducerClient = new EventHubClientBuilder()
+ .credential(fullyQualifiedNamespace, eventHubName,
+ new AzureSasCredential(sharedAccessSignature))
+ .buildAsyncProducerClient();
+ try {
+ StepVerifier.create(
+ asyncProducerClient.createBatch().flatMap(batch -> {
+ assertTrue(batch.tryAdd(testData));
+ return asyncProducerClient.send(batch);
+ })
+ ).verifyComplete();
+ } finally {
+ asyncProducerClient.close();
+ }
+ }
+
+ @Test
+ public void testConnectionWithAzureNameKeyCredential() {
+ String fullyQualifiedNamespace = "sb-name.servicebus.windows.net";
+ String sharedAccessKeyName = "SharedAccessKeyName test-value";
+ String sharedAccessKey = "SharedAccessKey test-value";
+ String eventHubName = "test-event-hub-name";
+
+ assertThrows(NullPointerException.class, () -> new EventHubClientBuilder()
+ .credential(null, eventHubName,
+ new AzureNamedKeyCredential(sharedAccessKeyName, sharedAccessKey)));
+
+ assertThrows(NullPointerException.class, () -> new EventHubClientBuilder()
+ .credential(fullyQualifiedNamespace, null,
+ new AzureNamedKeyCredential(sharedAccessKeyName, sharedAccessKey)));
+
+ assertThrows(IllegalArgumentException.class, () -> new EventHubClientBuilder()
+ .credential("", eventHubName,
+ new AzureNamedKeyCredential(sharedAccessKeyName, sharedAccessKey)));
+
+ assertThrows(IllegalArgumentException.class, () -> new EventHubClientBuilder()
+ .credential(fullyQualifiedNamespace, "",
+ new AzureNamedKeyCredential(sharedAccessKeyName, sharedAccessKey)));
+
+ assertThrows(NullPointerException.class, () -> new EventHubClientBuilder()
+ .credential(fullyQualifiedNamespace, eventHubName, (AzureNamedKeyCredential) null));
+
+ }
+
+ @Test
+ public void testConnectionWithAzureSasCredential() {
+ String fullyQualifiedNamespace = "sb-name.servicebus.windows.net";
+ String sharedAccessSignature = "SharedAccessSignature test-value";
+ String eventHubName = "test-event-hub-name";
+
+ assertThrows(NullPointerException.class, () -> new EventHubClientBuilder()
+ .credential(null, eventHubName, new AzureSasCredential(sharedAccessSignature)));
+
+ assertThrows(NullPointerException.class, () -> new EventHubClientBuilder()
+ .credential(fullyQualifiedNamespace, null, new AzureSasCredential(sharedAccessSignature)));
+
+ assertThrows(IllegalArgumentException.class, () -> new EventHubClientBuilder()
+ .credential("", eventHubName, new AzureSasCredential(sharedAccessSignature)));
+
+ assertThrows(IllegalArgumentException.class, () -> new EventHubClientBuilder()
+ .credential(fullyQualifiedNamespace, "", new AzureSasCredential(sharedAccessSignature)));
+
+ assertThrows(NullPointerException.class, () -> new EventHubClientBuilder()
+ .credential(fullyQualifiedNamespace, eventHubName, (AzureSasCredential) null));
+
+ }
+
private static Stream getProxyConfigurations() {
return Stream.of(
Arguments.of("http://localhost:8080", true),
diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/IntegrationTestBase.java b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/IntegrationTestBase.java
index cf70a30f13851..17c136924eb3f 100644
--- a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/IntegrationTestBase.java
+++ b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/IntegrationTestBase.java
@@ -220,7 +220,11 @@ protected static EventHubClientBuilder createBuilder(boolean useCredentials) {
}
protected static ConnectionStringProperties getConnectionStringProperties() {
- return new ConnectionStringProperties(getConnectionString());
+ return new ConnectionStringProperties(getConnectionString(false));
+ }
+
+ protected static ConnectionStringProperties getConnectionStringProperties(boolean withSas) {
+ return new ConnectionStringProperties(getConnectionString(withSas));
}
/**
diff --git a/sdk/farmbeats/azure-verticals-agrifood-farming/pom.xml b/sdk/farmbeats/azure-verticals-agrifood-farming/pom.xml
index 6122844b676ec..8412286b92fd0 100644
--- a/sdk/farmbeats/azure-verticals-agrifood-farming/pom.xml
+++ b/sdk/farmbeats/azure-verticals-agrifood-farming/pom.xml
@@ -79,7 +79,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/pom.xml b/sdk/formrecognizer/azure-ai-formrecognizer/pom.xml
index 4ce784402a862..d01b227670c4f 100644
--- a/sdk/formrecognizer/azure-ai-formrecognizer/pom.xml
+++ b/sdk/formrecognizer/azure-ai-formrecognizer/pom.xml
@@ -78,7 +78,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/hdinsight/azure-resourcemanager-hdinsight/pom.xml b/sdk/hdinsight/azure-resourcemanager-hdinsight/pom.xml
index 5a456eb10f651..7383b08ad0b90 100644
--- a/sdk/hdinsight/azure-resourcemanager-hdinsight/pom.xml
+++ b/sdk/hdinsight/azure-resourcemanager-hdinsight/pom.xml
@@ -54,7 +54,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/identity/azure-identity/CHANGELOG.md b/sdk/identity/azure-identity/CHANGELOG.md
index 162da6598bdfd..d73c757d6eff7 100644
--- a/sdk/identity/azure-identity/CHANGELOG.md
+++ b/sdk/identity/azure-identity/CHANGELOG.md
@@ -6,6 +6,12 @@
- Upgraded `azure-core` dependency to 1.17.0
+## 1.3.1 (2021-06-08)
+
+### Dependency Updates
+- Upgraded `azure-core` dependency to 1.17.0
+
+
## 1.3.0 (2021-05-11)
### Features Added
diff --git a/sdk/imagebuilder/azure-resourcemanager-imagebuilder/pom.xml b/sdk/imagebuilder/azure-resourcemanager-imagebuilder/pom.xml
index 6817ac04c92a1..31a844d4f3b77 100644
--- a/sdk/imagebuilder/azure-resourcemanager-imagebuilder/pom.xml
+++ b/sdk/imagebuilder/azure-resourcemanager-imagebuilder/pom.xml
@@ -54,7 +54,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/keyvault/azure-security-keyvault-administration/pom.xml b/sdk/keyvault/azure-security-keyvault-administration/pom.xml
index 5b2fa815ef15b..bb63a81804549 100644
--- a/sdk/keyvault/azure-security-keyvault-administration/pom.xml
+++ b/sdk/keyvault/azure-security-keyvault-administration/pom.xml
@@ -89,7 +89,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/keyvault/azure-security-keyvault-certificates/pom.xml b/sdk/keyvault/azure-security-keyvault-certificates/pom.xml
index 346c64f14e621..96bf408400ab0 100644
--- a/sdk/keyvault/azure-security-keyvault-certificates/pom.xml
+++ b/sdk/keyvault/azure-security-keyvault-certificates/pom.xml
@@ -98,7 +98,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/keyvault/azure-security-keyvault-keys/pom.xml b/sdk/keyvault/azure-security-keyvault-keys/pom.xml
index 9f7d098471b6f..91959c984d1e0 100644
--- a/sdk/keyvault/azure-security-keyvault-keys/pom.xml
+++ b/sdk/keyvault/azure-security-keyvault-keys/pom.xml
@@ -105,7 +105,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/keyvault/azure-security-keyvault-secrets/pom.xml b/sdk/keyvault/azure-security-keyvault-secrets/pom.xml
index b83d4ec16ba5a..0814f3ff0e3f4 100644
--- a/sdk/keyvault/azure-security-keyvault-secrets/pom.xml
+++ b/sdk/keyvault/azure-security-keyvault-secrets/pom.xml
@@ -105,7 +105,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/maintenance/azure-resourcemanager-maintenance/pom.xml b/sdk/maintenance/azure-resourcemanager-maintenance/pom.xml
index b9132bb32b8e1..3894af7f993d2 100644
--- a/sdk/maintenance/azure-resourcemanager-maintenance/pom.xml
+++ b/sdk/maintenance/azure-resourcemanager-maintenance/pom.xml
@@ -54,7 +54,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/maps/azure-resourcemanager-maps/pom.xml b/sdk/maps/azure-resourcemanager-maps/pom.xml
index 7df1814502297..dc2ad0bde0b33 100644
--- a/sdk/maps/azure-resourcemanager-maps/pom.xml
+++ b/sdk/maps/azure-resourcemanager-maps/pom.xml
@@ -54,7 +54,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor-perf/pom.xml b/sdk/metricsadvisor/azure-ai-metricsadvisor-perf/pom.xml
index 74d93b554a80c..aa497580a92e8 100644
--- a/sdk/metricsadvisor/azure-ai-metricsadvisor-perf/pom.xml
+++ b/sdk/metricsadvisor/azure-ai-metricsadvisor-perf/pom.xml
@@ -32,7 +32,7 @@
com.azure
azure-ai-metricsadvisor
- 1.0.0-beta.4
+ 1.0.0-beta.5
diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/CHANGELOG.md b/sdk/metricsadvisor/azure-ai-metricsadvisor/CHANGELOG.md
index 897bc0f4001ae..ebdce48ff39b9 100644
--- a/sdk/metricsadvisor/azure-ai-metricsadvisor/CHANGELOG.md
+++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/CHANGELOG.md
@@ -1,6 +1,9 @@
# Release History
-## 1.0.0-beta.4 (2021-03-08)
+## 1.0.0-beta.5 (Unreleased)
+
+
+## 1.0.0-beta.4 (2021-06-09)
### Features added
- Added support for Azure Log Analytics DataFeed source
diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/pom.xml b/sdk/metricsadvisor/azure-ai-metricsadvisor/pom.xml
index 24d4f991b6de2..8399d63bd39d3 100644
--- a/sdk/metricsadvisor/azure-ai-metricsadvisor/pom.xml
+++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/pom.xml
@@ -13,7 +13,7 @@
com.azure
azure-ai-metricsadvisor
- 1.0.0-beta.4
+ 1.0.0-beta.5
Microsoft Azure client library for Metrics Advisor
This package contains the Microsoft Azure Cognitive Services Metrics Advisor SDK.
@@ -78,7 +78,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/metricsadvisor/pom.xml b/sdk/metricsadvisor/pom.xml
index 3df4eaa7249e3..292ea536ad856 100644
--- a/sdk/metricsadvisor/pom.xml
+++ b/sdk/metricsadvisor/pom.xml
@@ -19,7 +19,7 @@
com.azure
azure-ai-metricsadvisor
- 1.0.0-beta.4
+ 1.0.0-beta.5
diff --git a/sdk/mixedreality/azure-mixedreality-authentication/pom.xml b/sdk/mixedreality/azure-mixedreality-authentication/pom.xml
index 0bdbb1c6d2f35..0cf3aaefb21ad 100644
--- a/sdk/mixedreality/azure-mixedreality-authentication/pom.xml
+++ b/sdk/mixedreality/azure-mixedreality-authentication/pom.xml
@@ -88,7 +88,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/modelsrepository/azure-iot-modelsrepository/pom.xml b/sdk/modelsrepository/azure-iot-modelsrepository/pom.xml
index b503ab04f42b5..a6ea9abe0a862 100644
--- a/sdk/modelsrepository/azure-iot-modelsrepository/pom.xml
+++ b/sdk/modelsrepository/azure-iot-modelsrepository/pom.xml
@@ -59,7 +59,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/monitor/azure-monitor-query/CHANGELOG.md b/sdk/monitor/azure-monitor-query/CHANGELOG.md
index 768d8d43ab76b..a326544d10990 100644
--- a/sdk/monitor/azure-monitor-query/CHANGELOG.md
+++ b/sdk/monitor/azure-monitor-query/CHANGELOG.md
@@ -1,5 +1,10 @@
# Release History
-## 1.0.0-beta.1 (Unreleased)
+## 1.0.0-beta.1 (2021-06-09)
+Version 1.0.0-beta.1 is a preview of our efforts in creating a client library for querying Azure Monitor logs and
+metrics that is developer-friendly, idiomatic to the Java ecosystem, and as consistent across different languages
+and platforms as possible. The principles that guide our efforts can be found in the
+[Azure SDK Design Guidelines for Java](https://azure.github.io/azure-sdk/java_introduction.html).
-- Initial release. Please see the README and wiki for information on the new design.
+## Features Added
+- Initial release. Please see the README and wiki for information on using the new library.
diff --git a/sdk/monitor/azure-monitor-query/README.md b/sdk/monitor/azure-monitor-query/README.md
index 281a0d9f93bfb..084857bae8a20 100644
--- a/sdk/monitor/azure-monitor-query/README.md
+++ b/sdk/monitor/azure-monitor-query/README.md
@@ -415,6 +415,10 @@ comments.
+[source_code]: https://github.com/Azure/azure-sdk-for-java/tree/master/sdk/monitor/azure-monitor-query/src
+
+[samples_readme]: https://github.com/Azure/azure-sdk-for-java/blob/master/sdk/monitor/azure-monitor-query/src/samples/java/README.md
+
[azure_subscription]: https://azure.microsoft.com/free
[jdk_link]: https://docs.microsoft.com/java/azure/jdk/?view=azure-java-stable
diff --git a/sdk/monitor/azure-monitor-query/pom.xml b/sdk/monitor/azure-monitor-query/pom.xml
index 1bf8d4e3311c1..3a33e9af9ac84 100644
--- a/sdk/monitor/azure-monitor-query/pom.xml
+++ b/sdk/monitor/azure-monitor-query/pom.xml
@@ -64,7 +64,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/netapp/azure-resourcemanager-netapp/pom.xml b/sdk/netapp/azure-resourcemanager-netapp/pom.xml
index 4dff37e253eb1..4fe4606120f07 100644
--- a/sdk/netapp/azure-resourcemanager-netapp/pom.xml
+++ b/sdk/netapp/azure-resourcemanager-netapp/pom.xml
@@ -54,7 +54,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/purview/azure-analytics-purview-catalog/pom.xml b/sdk/purview/azure-analytics-purview-catalog/pom.xml
index 593427d0c88d9..771f2fe76052d 100644
--- a/sdk/purview/azure-analytics-purview-catalog/pom.xml
+++ b/sdk/purview/azure-analytics-purview-catalog/pom.xml
@@ -78,7 +78,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/purview/azure-analytics-purview-scanning/pom.xml b/sdk/purview/azure-analytics-purview-scanning/pom.xml
index bc622abacec70..b792581298ef5 100644
--- a/sdk/purview/azure-analytics-purview-scanning/pom.xml
+++ b/sdk/purview/azure-analytics-purview-scanning/pom.xml
@@ -78,7 +78,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/quantum/azure-quantum-jobs/pom.xml b/sdk/quantum/azure-quantum-jobs/pom.xml
index 1818452666dc3..f569e07adceae 100644
--- a/sdk/quantum/azure-quantum-jobs/pom.xml
+++ b/sdk/quantum/azure-quantum-jobs/pom.xml
@@ -68,13 +68,13 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
com.azure
azure-storage-blob
- 12.11.1
+ 12.12.0
test
diff --git a/sdk/remoterendering/azure-mixedreality-remoterendering/pom.xml b/sdk/remoterendering/azure-mixedreality-remoterendering/pom.xml
index 2189b9ab50c67..8088b43ec7697 100644
--- a/sdk/remoterendering/azure-mixedreality-remoterendering/pom.xml
+++ b/sdk/remoterendering/azure-mixedreality-remoterendering/pom.xml
@@ -85,7 +85,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/pom.xml b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/pom.xml
index df88f34b080da..0963d1e34c591 100644
--- a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/pom.xml
+++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/pom.xml
@@ -54,7 +54,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/resourcemanager/azure-resourcemanager-appplatform/pom.xml b/sdk/resourcemanager/azure-resourcemanager-appplatform/pom.xml
index 117c9aa0f77c4..85549958f857f 100644
--- a/sdk/resourcemanager/azure-resourcemanager-appplatform/pom.xml
+++ b/sdk/resourcemanager/azure-resourcemanager-appplatform/pom.xml
@@ -57,7 +57,7 @@
com.azure
azure-storage-file-share
- 12.9.1
+ 12.10.0
com.azure
diff --git a/sdk/resourcemanager/azure-resourcemanager-compute/pom.xml b/sdk/resourcemanager/azure-resourcemanager-compute/pom.xml
index 28f7d5bdd3ea6..861ee37556e2c 100644
--- a/sdk/resourcemanager/azure-resourcemanager-compute/pom.xml
+++ b/sdk/resourcemanager/azure-resourcemanager-compute/pom.xml
@@ -107,7 +107,7 @@
com.azure
azure-storage-blob
- 12.11.1
+ 12.12.0
test
diff --git a/sdk/resourcemanager/azure-resourcemanager-containerinstance/pom.xml b/sdk/resourcemanager/azure-resourcemanager-containerinstance/pom.xml
index ce9aa0e1736c2..fa0cc69d08afe 100644
--- a/sdk/resourcemanager/azure-resourcemanager-containerinstance/pom.xml
+++ b/sdk/resourcemanager/azure-resourcemanager-containerinstance/pom.xml
@@ -73,7 +73,7 @@
com.azure
azure-storage-file-share
- 12.9.1
+ 12.10.0
com.azure
diff --git a/sdk/resourcemanager/azure-resourcemanager-samples/pom.xml b/sdk/resourcemanager/azure-resourcemanager-samples/pom.xml
index 7163a6e0fdec0..65ef6ecbf9791 100644
--- a/sdk/resourcemanager/azure-resourcemanager-samples/pom.xml
+++ b/sdk/resourcemanager/azure-resourcemanager-samples/pom.xml
@@ -57,7 +57,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
com.jcraft
@@ -98,7 +98,7 @@
com.azure
azure-storage-blob
- 12.11.1
+ 12.12.0
com.azure
diff --git a/sdk/resourcemanager/azure-resourcemanager-test/pom.xml b/sdk/resourcemanager/azure-resourcemanager-test/pom.xml
index 92a2e1dabb4f0..06630b7d6dd87 100644
--- a/sdk/resourcemanager/azure-resourcemanager-test/pom.xml
+++ b/sdk/resourcemanager/azure-resourcemanager-test/pom.xml
@@ -67,7 +67,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
com.azure
diff --git a/sdk/schemaregistry/azure-data-schemaregistry-avro/pom.xml b/sdk/schemaregistry/azure-data-schemaregistry-avro/pom.xml
index 15d49199a1f8a..62637b8f7fac7 100644
--- a/sdk/schemaregistry/azure-data-schemaregistry-avro/pom.xml
+++ b/sdk/schemaregistry/azure-data-schemaregistry-avro/pom.xml
@@ -75,7 +75,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/schemaregistry/azure-data-schemaregistry/pom.xml b/sdk/schemaregistry/azure-data-schemaregistry/pom.xml
index 1e3b98d0d8ae4..a64cd21fdeb8a 100644
--- a/sdk/schemaregistry/azure-data-schemaregistry/pom.xml
+++ b/sdk/schemaregistry/azure-data-schemaregistry/pom.xml
@@ -90,7 +90,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/search/azure-search-documents/CHANGELOG.md b/sdk/search/azure-search-documents/CHANGELOG.md
index b1a898ec0aea2..2a2de263d8c1e 100644
--- a/sdk/search/azure-search-documents/CHANGELOG.md
+++ b/sdk/search/azure-search-documents/CHANGELOG.md
@@ -1,6 +1,36 @@
# Release History
-## 11.4.0-beta.3 (Unreleased)
+## 11.5.0-beta.1 (Unreleased)
+
+## 11.4.0 (2021-06-08)
+
+### Features Added
+
+- Added the ability to configure Knowledge Store in skillsets.
+- Added factory method to `SynonymMap` to enable creation from a file.
+- Added support for `Edm.GeographyPoint` in `FieldBuilder` when property has type `GeoPoint`.
+- Added support for geography based filtering in `SearchFilter` when `GeoPosition`, `GeoPoint`, `GeoLineString`, or
+ `GeoPolygon` are used as formatting arguments.
+- Added new skills `CustomEntityLookupSkill` and `DocumentExtractionSkill` and new skill versions for
+ `KeyPhraseExtractionSkill` and `LanguageDetectionSkill`.
+- Added support for the ADLS Gen 2 Indexer data source type.
+- Added skillset counts to `SearchServiceCounters`.
+- Added additional log messages to `SearchIndexingBufferedSender` and `SearchIndexingBufferedAsyncSender`.
+
+### Breaking Changes
+
+- Removed support for service version `2020-06-30-Preview`. Default version is now `2020-06-30`.
+- Removed Semantic Search capability to `SearchClient` and `SearchAsyncClient`.
+- Removed support for Normalizers in `SearchField` and `SearchIndex` with `CustomNormalizer` and `LexicalNormalizer`.
+
+### Dependency Updates
+
+- Updated `azure-core` from `1.16.0` to `1.17.0`.
+- Updated `azure-core-http-netty` from `1.9.2` to `1.10.0`.
+- Updated `azure-core-serializer-json-jackson` from `1.2.3` to `1.2.4`.
+- Updated Jackson from `2.12.2` to `2.12.3`.
+- Updated Reactor from `3.4.5` to `3.4.6`.
+- Updated Reactor Netty from `1.0.6` to `1.0.7`.
## 11.3.2 (2021-05-11)
diff --git a/sdk/search/azure-search-documents/README.md b/sdk/search/azure-search-documents/README.md
index c9a00db7767b3..0f8d0406024d1 100644
--- a/sdk/search/azure-search-documents/README.md
+++ b/sdk/search/azure-search-documents/README.md
@@ -38,7 +38,7 @@ Use the Azure Cognitive Search client library to:
com.azure
azure-search-documents
- 11.3.2
+ 11.4.0
```
[//]: # ({x-version-update-end})
diff --git a/sdk/search/azure-search-documents/pom.xml b/sdk/search/azure-search-documents/pom.xml
index d029c6bfaf312..be15bfb21d475 100644
--- a/sdk/search/azure-search-documents/pom.xml
+++ b/sdk/search/azure-search-documents/pom.xml
@@ -16,7 +16,7 @@
com.azure
azure-search-documents
- 11.4.0-beta.3
+ 11.5.0-beta.1
jar
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/AsciiFoldingTokenFilter.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/AsciiFoldingTokenFilter.java
index 6a1e2a436e681..d26982874dd59 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/AsciiFoldingTokenFilter.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/AsciiFoldingTokenFilter.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@@ -18,11 +17,10 @@
* "Basic Latin" Unicode block) into their ASCII equivalents, if such equivalents exist. This token filter is
* implemented using Apache Lucene.
*/
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.AsciiFoldingTokenFilter")
-@JsonFlatten
@Fluent
-public class AsciiFoldingTokenFilter extends TokenFilter {
+public final class AsciiFoldingTokenFilter extends TokenFilter {
/*
* A value indicating whether the original token will be kept. Default is
* false.
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/CjkBigramTokenFilter.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/CjkBigramTokenFilter.java
index 0d19feedec7b4..c3fd45a270679 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/CjkBigramTokenFilter.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/CjkBigramTokenFilter.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.azure.search.documents.indexes.models.CjkBigramTokenFilterScripts;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
@@ -19,11 +18,10 @@
* Forms bigrams of CJK terms that are generated from the standard tokenizer. This token filter is implemented using
* Apache Lucene.
*/
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.CjkBigramTokenFilter")
-@JsonFlatten
@Fluent
-public class CjkBigramTokenFilter extends TokenFilter {
+public final class CjkBigramTokenFilter extends TokenFilter {
/*
* The scripts to ignore.
*/
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/ClassicTokenizer.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/ClassicTokenizer.java
index 270ad44a8b8c5..23f74953a7fcf 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/ClassicTokenizer.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/ClassicTokenizer.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@@ -17,11 +16,10 @@
* Grammar-based tokenizer that is suitable for processing most European-language documents. This tokenizer is
* implemented using Apache Lucene.
*/
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.ClassicTokenizer")
-@JsonFlatten
@Fluent
-public class ClassicTokenizer extends LexicalTokenizer {
+public final class ClassicTokenizer extends LexicalTokenizer {
/*
* The maximum token length. Default is 255. Tokens longer than the maximum
* length are split. The maximum token length that can be used is 300
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/CommonGramTokenFilter.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/CommonGramTokenFilter.java
index 700dc0deffb72..5875af42e3453 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/CommonGramTokenFilter.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/CommonGramTokenFilter.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@@ -18,11 +17,10 @@
* Construct bigrams for frequently occurring terms while indexing. Single terms are still indexed too, with bigrams
* overlaid. This token filter is implemented using Apache Lucene.
*/
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.CommonGramTokenFilter")
-@JsonFlatten
@Fluent
-public class CommonGramTokenFilter extends TokenFilter {
+public final class CommonGramTokenFilter extends TokenFilter {
/*
* The set of common words.
*/
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/DictionaryDecompounderTokenFilter.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/DictionaryDecompounderTokenFilter.java
index 1a623afd3a405..647c08f50df58 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/DictionaryDecompounderTokenFilter.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/DictionaryDecompounderTokenFilter.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@@ -15,11 +14,10 @@
import java.util.List;
/** Decomposes compound words found in many Germanic languages. This token filter is implemented using Apache Lucene. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.DictionaryDecompounderTokenFilter")
-@JsonFlatten
@Fluent
-public class DictionaryDecompounderTokenFilter extends TokenFilter {
+public final class DictionaryDecompounderTokenFilter extends TokenFilter {
/*
* The list of words to match against.
*/
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/EdgeNGramTokenFilter.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/EdgeNGramTokenFilter.java
index bab0bc04e5da1..d01adaed1d9a7 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/EdgeNGramTokenFilter.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/EdgeNGramTokenFilter.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.azure.search.documents.indexes.models.EdgeNGramTokenFilterSide;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
@@ -18,11 +17,10 @@
* Generates n-grams of the given size(s) starting from the front or the back of an input token. This token filter is
* implemented using Apache Lucene.
*/
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.EdgeNGramTokenFilter")
-@JsonFlatten
@Fluent
-public class EdgeNGramTokenFilter extends TokenFilter {
+public final class EdgeNGramTokenFilter extends TokenFilter {
/*
* The minimum n-gram length. Default is 1. Must be less than the value of
* maxGram.
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/EdgeNGramTokenFilterV2.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/EdgeNGramTokenFilterV2.java
index 4ed4c22939ef5..79b303fd22167 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/EdgeNGramTokenFilterV2.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/EdgeNGramTokenFilterV2.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.azure.search.documents.indexes.models.EdgeNGramTokenFilterSide;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
@@ -18,11 +17,10 @@
* Generates n-grams of the given size(s) starting from the front or the back of an input token. This token filter is
* implemented using Apache Lucene.
*/
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.EdgeNGramTokenFilterV2")
-@JsonFlatten
@Fluent
-public class EdgeNGramTokenFilterV2 extends TokenFilter {
+public final class EdgeNGramTokenFilterV2 extends TokenFilter {
/*
* The minimum n-gram length. Default is 1. Maximum is 300. Must be less
* than the value of maxGram.
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/EdgeNGramTokenizer.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/EdgeNGramTokenizer.java
index 896284a9f1931..8cb00531daffe 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/EdgeNGramTokenizer.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/EdgeNGramTokenizer.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.azure.search.documents.indexes.models.TokenCharacterKind;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
@@ -19,11 +18,10 @@
* Tokenizes the input from an edge into n-grams of the given size(s). This tokenizer is implemented using Apache
* Lucene.
*/
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.EdgeNGramTokenizer")
-@JsonFlatten
@Fluent
-public class EdgeNGramTokenizer extends LexicalTokenizer {
+public final class EdgeNGramTokenizer extends LexicalTokenizer {
/*
* The minimum n-gram length. Default is 1. Maximum is 300. Must be less
* than the value of maxGram.
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/ElisionTokenFilter.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/ElisionTokenFilter.java
index 8510fcceea4f5..e12bcd6bef0cb 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/ElisionTokenFilter.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/ElisionTokenFilter.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@@ -18,11 +17,10 @@
* Removes elisions. For example, "l'avion" (the plane) will be converted to "avion" (plane). This token filter is
* implemented using Apache Lucene.
*/
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.ElisionTokenFilter")
-@JsonFlatten
@Fluent
-public class ElisionTokenFilter extends TokenFilter {
+public final class ElisionTokenFilter extends TokenFilter {
/*
* The set of articles to remove.
*/
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/KeepTokenFilter.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/KeepTokenFilter.java
index 0247fc467e325..b988cf787ae6c 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/KeepTokenFilter.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/KeepTokenFilter.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@@ -18,11 +17,10 @@
* A token filter that only keeps tokens with text contained in a specified list of words. This token filter is
* implemented using Apache Lucene.
*/
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.KeepTokenFilter")
-@JsonFlatten
@Fluent
-public class KeepTokenFilter extends TokenFilter {
+public final class KeepTokenFilter extends TokenFilter {
/*
* The list of words to keep.
*/
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/KeywordMarkerTokenFilter.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/KeywordMarkerTokenFilter.java
index 9e73147db2070..94554ee724c30 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/KeywordMarkerTokenFilter.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/KeywordMarkerTokenFilter.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@@ -15,11 +14,10 @@
import java.util.List;
/** Marks terms as keywords. This token filter is implemented using Apache Lucene. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.KeywordMarkerTokenFilter")
-@JsonFlatten
@Fluent
-public class KeywordMarkerTokenFilter extends TokenFilter {
+public final class KeywordMarkerTokenFilter extends TokenFilter {
/*
* A list of words to mark as keywords.
*/
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/KeywordTokenizer.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/KeywordTokenizer.java
index 94094f307e2dd..d888e84161bf0 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/KeywordTokenizer.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/KeywordTokenizer.java
@@ -7,18 +7,16 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
/** Emits the entire input as a single token. This tokenizer is implemented using Apache Lucene. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.KeywordTokenizer")
-@JsonFlatten
@Fluent
-public class KeywordTokenizer extends LexicalTokenizer {
+public final class KeywordTokenizer extends LexicalTokenizer {
/*
* The read buffer size in bytes. Default is 256.
*/
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/KeywordTokenizerV2.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/KeywordTokenizerV2.java
index ca2936b246510..7810e2a6a30bc 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/KeywordTokenizerV2.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/KeywordTokenizerV2.java
@@ -7,18 +7,16 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
/** Emits the entire input as a single token. This tokenizer is implemented using Apache Lucene. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.KeywordTokenizerV2")
-@JsonFlatten
@Fluent
-public class KeywordTokenizerV2 extends LexicalTokenizer {
+public final class KeywordTokenizerV2 extends LexicalTokenizer {
/*
* The maximum token length. Default is 256. Tokens longer than the maximum
* length are split. The maximum token length that can be used is 300
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/LengthTokenFilter.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/LengthTokenFilter.java
index 81e66a50ffe13..315abd86c42dc 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/LengthTokenFilter.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/LengthTokenFilter.java
@@ -7,18 +7,16 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
/** Removes words that are too long or too short. This token filter is implemented using Apache Lucene. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.LengthTokenFilter")
-@JsonFlatten
@Fluent
-public class LengthTokenFilter extends TokenFilter {
+public final class LengthTokenFilter extends TokenFilter {
/*
* The minimum length in characters. Default is 0. Maximum is 300. Must be
* less than the value of max.
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/LexicalTokenizer.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/LexicalTokenizer.java
index 8e1f3de664655..c623c699ec6de 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/LexicalTokenizer.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/LexicalTokenizer.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSubTypes;
@@ -18,7 +17,7 @@
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
- property = "@odata\\.type",
+ property = "@odata.type",
defaultImpl = LexicalTokenizer.class)
@JsonTypeName("LexicalTokenizer")
@JsonSubTypes({
@@ -41,7 +40,6 @@
@JsonSubTypes.Type(name = "#Microsoft.Azure.Search.StandardTokenizerV2", value = LuceneStandardTokenizerV2.class),
@JsonSubTypes.Type(name = "#Microsoft.Azure.Search.UaxUrlEmailTokenizer", value = UaxUrlEmailTokenizer.class)
})
-@JsonFlatten
@Fluent
public class LexicalTokenizer {
/*
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/LimitTokenFilter.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/LimitTokenFilter.java
index 0f1885f8cb67e..9c5008dc04f2f 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/LimitTokenFilter.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/LimitTokenFilter.java
@@ -7,18 +7,16 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
/** Limits the number of tokens while indexing. This token filter is implemented using Apache Lucene. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.LimitTokenFilter")
-@JsonFlatten
@Fluent
-public class LimitTokenFilter extends TokenFilter {
+public final class LimitTokenFilter extends TokenFilter {
/*
* The maximum number of tokens to produce. Default is 1.
*/
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/LuceneStandardTokenizer.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/LuceneStandardTokenizer.java
index 38f4b9cb618ad..1fcfca6825a98 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/LuceneStandardTokenizer.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/LuceneStandardTokenizer.java
@@ -7,18 +7,16 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
/** Breaks text following the Unicode Text Segmentation rules. This tokenizer is implemented using Apache Lucene. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.StandardTokenizer")
-@JsonFlatten
@Fluent
-public class LuceneStandardTokenizer extends LexicalTokenizer {
+public final class LuceneStandardTokenizer extends LexicalTokenizer {
/*
* The maximum token length. Default is 255. Tokens longer than the maximum
* length are split.
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/LuceneStandardTokenizerV2.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/LuceneStandardTokenizerV2.java
index 858f53e190a29..f0e66e5498269 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/LuceneStandardTokenizerV2.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/LuceneStandardTokenizerV2.java
@@ -7,18 +7,16 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
/** Breaks text following the Unicode Text Segmentation rules. This tokenizer is implemented using Apache Lucene. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.StandardTokenizerV2")
-@JsonFlatten
@Fluent
-public class LuceneStandardTokenizerV2 extends LexicalTokenizer {
+public final class LuceneStandardTokenizerV2 extends LexicalTokenizer {
/*
* The maximum token length. Default is 255. Tokens longer than the maximum
* length are split. The maximum token length that can be used is 300
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/MicrosoftLanguageStemmingTokenizer.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/MicrosoftLanguageStemmingTokenizer.java
index 850a2f8775ab6..c9ad305d99ea7 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/MicrosoftLanguageStemmingTokenizer.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/MicrosoftLanguageStemmingTokenizer.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.azure.search.documents.indexes.models.MicrosoftStemmingTokenizerLanguage;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
@@ -15,11 +14,10 @@
import com.fasterxml.jackson.annotation.JsonTypeName;
/** Divides text using language-specific rules and reduces words to their base forms. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.MicrosoftLanguageStemmingTokenizer")
-@JsonFlatten
@Fluent
-public class MicrosoftLanguageStemmingTokenizer extends LexicalTokenizer {
+public final class MicrosoftLanguageStemmingTokenizer extends LexicalTokenizer {
/*
* The maximum token length. Tokens longer than the maximum length are
* split. Maximum token length that can be used is 300 characters. Tokens
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/MicrosoftLanguageTokenizer.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/MicrosoftLanguageTokenizer.java
index 5345914df5a22..663e63c809eb8 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/MicrosoftLanguageTokenizer.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/MicrosoftLanguageTokenizer.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.azure.search.documents.indexes.models.MicrosoftTokenizerLanguage;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
@@ -15,11 +14,10 @@
import com.fasterxml.jackson.annotation.JsonTypeName;
/** Divides text using language-specific rules. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.MicrosoftLanguageTokenizer")
-@JsonFlatten
@Fluent
-public class MicrosoftLanguageTokenizer extends LexicalTokenizer {
+public final class MicrosoftLanguageTokenizer extends LexicalTokenizer {
/*
* The maximum token length. Tokens longer than the maximum length are
* split. Maximum token length that can be used is 300 characters. Tokens
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/NGramTokenFilter.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/NGramTokenFilter.java
index af6e2ad9ee5c3..db5f5b28f2541 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/NGramTokenFilter.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/NGramTokenFilter.java
@@ -7,18 +7,16 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
/** Generates n-grams of the given size(s). This token filter is implemented using Apache Lucene. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.NGramTokenFilter")
-@JsonFlatten
@Fluent
-public class NGramTokenFilter extends TokenFilter {
+public final class NGramTokenFilter extends TokenFilter {
/*
* The minimum n-gram length. Default is 1. Must be less than the value of
* maxGram.
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/NGramTokenFilterV2.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/NGramTokenFilterV2.java
index 5ca3b99d10c01..4eabb7557d0db 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/NGramTokenFilterV2.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/NGramTokenFilterV2.java
@@ -7,18 +7,16 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
/** Generates n-grams of the given size(s). This token filter is implemented using Apache Lucene. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.NGramTokenFilterV2")
-@JsonFlatten
@Fluent
-public class NGramTokenFilterV2 extends TokenFilter {
+public final class NGramTokenFilterV2 extends TokenFilter {
/*
* The minimum n-gram length. Default is 1. Maximum is 300. Must be less
* than the value of maxGram.
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/NGramTokenizer.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/NGramTokenizer.java
index 01d9d216f4a23..ee73e49dd88b1 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/NGramTokenizer.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/NGramTokenizer.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.azure.search.documents.indexes.models.TokenCharacterKind;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
@@ -16,11 +15,10 @@
import java.util.List;
/** Tokenizes the input into n-grams of the given size(s). This tokenizer is implemented using Apache Lucene. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.NGramTokenizer")
-@JsonFlatten
@Fluent
-public class NGramTokenizer extends LexicalTokenizer {
+public final class NGramTokenizer extends LexicalTokenizer {
/*
* The minimum n-gram length. Default is 1. Maximum is 300. Must be less
* than the value of maxGram.
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/PathHierarchyTokenizerV2.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/PathHierarchyTokenizerV2.java
index e7aeca159d2b5..85c1b27d6997a 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/PathHierarchyTokenizerV2.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/PathHierarchyTokenizerV2.java
@@ -7,18 +7,16 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
/** Tokenizer for path-like hierarchies. This tokenizer is implemented using Apache Lucene. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.PathHierarchyTokenizerV2")
-@JsonFlatten
@Fluent
-public class PathHierarchyTokenizerV2 extends LexicalTokenizer {
+public final class PathHierarchyTokenizerV2 extends LexicalTokenizer {
/*
* The delimiter character to use. Default is "/".
*/
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/PatternCaptureTokenFilter.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/PatternCaptureTokenFilter.java
index 69e9648b0a6ce..dee8d5657942d 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/PatternCaptureTokenFilter.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/PatternCaptureTokenFilter.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@@ -18,11 +17,10 @@
* Uses Java regexes to emit multiple tokens - one for each capture group in one or more patterns. This token filter is
* implemented using Apache Lucene.
*/
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.PatternCaptureTokenFilter")
-@JsonFlatten
@Fluent
-public class PatternCaptureTokenFilter extends TokenFilter {
+public final class PatternCaptureTokenFilter extends TokenFilter {
/*
* A list of patterns to match against each token.
*/
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/PatternReplaceTokenFilter.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/PatternReplaceTokenFilter.java
index cc63bca32eec0..483377527c052 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/PatternReplaceTokenFilter.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/PatternReplaceTokenFilter.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@@ -19,11 +18,10 @@
* "aa bb aa bb", pattern "(aa)\s+(bb)", and replacement "$1#$2", the result would be "aa#bb aa#bb". This token filter
* is implemented using Apache Lucene.
*/
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.PatternReplaceTokenFilter")
-@JsonFlatten
@Fluent
-public class PatternReplaceTokenFilter extends TokenFilter {
+public final class PatternReplaceTokenFilter extends TokenFilter {
/*
* A regular expression pattern.
*/
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/PatternTokenizer.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/PatternTokenizer.java
index 9f3cf38ab50a8..facb32fd2a892 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/PatternTokenizer.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/PatternTokenizer.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.azure.search.documents.indexes.models.RegexFlags;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
@@ -18,11 +17,10 @@
* Tokenizer that uses regex pattern matching to construct distinct tokens. This tokenizer is implemented using Apache
* Lucene.
*/
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.PatternTokenizer")
-@JsonFlatten
@Fluent
-public class PatternTokenizer extends LexicalTokenizer {
+public final class PatternTokenizer extends LexicalTokenizer {
/*
* A regular expression pattern to match token separators. Default is an
* expression that matches one or more non-word characters.
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/PhoneticTokenFilter.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/PhoneticTokenFilter.java
index 2f2b67e708de6..0cc0a41f4cf81 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/PhoneticTokenFilter.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/PhoneticTokenFilter.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.azure.search.documents.indexes.models.PhoneticEncoder;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
@@ -15,11 +14,10 @@
import com.fasterxml.jackson.annotation.JsonTypeName;
/** Create tokens for phonetic matches. This token filter is implemented using Apache Lucene. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.PhoneticTokenFilter")
-@JsonFlatten
@Fluent
-public class PhoneticTokenFilter extends TokenFilter {
+public final class PhoneticTokenFilter extends TokenFilter {
/*
* The phonetic encoder to use. Default is "metaphone".
*/
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/ShingleTokenFilter.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/ShingleTokenFilter.java
index 113fbbf715499..fc84724128620 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/ShingleTokenFilter.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/ShingleTokenFilter.java
@@ -7,18 +7,16 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
/** Creates combinations of tokens as a single token. This token filter is implemented using Apache Lucene. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.ShingleTokenFilter")
-@JsonFlatten
@Fluent
-public class ShingleTokenFilter extends TokenFilter {
+public final class ShingleTokenFilter extends TokenFilter {
/*
* The maximum shingle size. Default and minimum value is 2.
*/
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/SnowballTokenFilter.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/SnowballTokenFilter.java
index e7c8a450023f0..f7b487b729c45 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/SnowballTokenFilter.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/SnowballTokenFilter.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.azure.search.documents.indexes.models.SnowballTokenFilterLanguage;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
@@ -17,11 +16,10 @@
/**
* A filter that stems words using a Snowball-generated stemmer. This token filter is implemented using Apache Lucene.
*/
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.SnowballTokenFilter")
-@JsonFlatten
@Fluent
-public class SnowballTokenFilter extends TokenFilter {
+public final class SnowballTokenFilter extends TokenFilter {
/*
* The language to use.
*/
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/StemmerOverrideTokenFilter.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/StemmerOverrideTokenFilter.java
index 8877c8d665400..ba033dc1b0253 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/StemmerOverrideTokenFilter.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/StemmerOverrideTokenFilter.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@@ -19,11 +18,10 @@
* terms will be marked as keywords so that they will not be stemmed with stemmers down the chain. Must be placed before
* any stemming filters. This token filter is implemented using Apache Lucene.
*/
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.StemmerOverrideTokenFilter")
-@JsonFlatten
@Fluent
-public class StemmerOverrideTokenFilter extends TokenFilter {
+public final class StemmerOverrideTokenFilter extends TokenFilter {
/*
* A list of stemming rules in the following format: "word => stem", for
* example: "ran => run".
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/StemmerTokenFilter.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/StemmerTokenFilter.java
index bae2b83de2e9a..2aa4bb827b03f 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/StemmerTokenFilter.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/StemmerTokenFilter.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.azure.search.documents.indexes.models.StemmerTokenFilterLanguage;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
@@ -15,11 +14,10 @@
import com.fasterxml.jackson.annotation.JsonTypeName;
/** Language specific stemming filter. This token filter is implemented using Apache Lucene. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.StemmerTokenFilter")
-@JsonFlatten
@Fluent
-public class StemmerTokenFilter extends TokenFilter {
+public final class StemmerTokenFilter extends TokenFilter {
/*
* The language to use.
*/
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/StopwordsTokenFilter.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/StopwordsTokenFilter.java
index 9fad42176f929..f1ad3ac11e985 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/StopwordsTokenFilter.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/StopwordsTokenFilter.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.azure.search.documents.indexes.models.StopwordsList;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
@@ -16,11 +15,10 @@
import java.util.List;
/** Removes stop words from a token stream. This token filter is implemented using Apache Lucene. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.StopwordsTokenFilter")
-@JsonFlatten
@Fluent
-public class StopwordsTokenFilter extends TokenFilter {
+public final class StopwordsTokenFilter extends TokenFilter {
/*
* The list of stopwords. This property and the stopwords list property
* cannot both be set.
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/SynonymTokenFilter.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/SynonymTokenFilter.java
index cee85167d70a2..067426e17a97d 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/SynonymTokenFilter.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/SynonymTokenFilter.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@@ -15,11 +14,10 @@
import java.util.List;
/** Matches single or multi-word synonyms in a token stream. This token filter is implemented using Apache Lucene. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.SynonymTokenFilter")
-@JsonFlatten
@Fluent
-public class SynonymTokenFilter extends TokenFilter {
+public final class SynonymTokenFilter extends TokenFilter {
/*
* A list of synonyms in following one of two formats: 1. incredible,
* unbelievable, fabulous => amazing - all terms on the left side of =>
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/TokenFilter.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/TokenFilter.java
index 6a5629798800f..d5ac80737935e 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/TokenFilter.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/TokenFilter.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSubTypes;
@@ -18,7 +17,7 @@
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
- property = "@odata\\.type",
+ property = "@odata.type",
defaultImpl = TokenFilter.class)
@JsonTypeName("TokenFilter")
@JsonSubTypes({
@@ -60,7 +59,6 @@
name = "#Microsoft.Azure.Search.WordDelimiterTokenFilter",
value = WordDelimiterTokenFilter.class)
})
-@JsonFlatten
@Fluent
public class TokenFilter {
/*
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/TruncateTokenFilter.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/TruncateTokenFilter.java
index 03989131417ce..cda90fd713173 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/TruncateTokenFilter.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/TruncateTokenFilter.java
@@ -7,18 +7,16 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
/** Truncates the terms to a specific length. This token filter is implemented using Apache Lucene. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.TruncateTokenFilter")
-@JsonFlatten
@Fluent
-public class TruncateTokenFilter extends TokenFilter {
+public final class TruncateTokenFilter extends TokenFilter {
/*
* The length at which terms will be truncated. Default and maximum is 300.
*/
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/UaxUrlEmailTokenizer.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/UaxUrlEmailTokenizer.java
index d29c07afb3a3f..8754c0d38e620 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/UaxUrlEmailTokenizer.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/UaxUrlEmailTokenizer.java
@@ -7,18 +7,16 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
/** Tokenizes urls and emails as one token. This tokenizer is implemented using Apache Lucene. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.UaxUrlEmailTokenizer")
-@JsonFlatten
@Fluent
-public class UaxUrlEmailTokenizer extends LexicalTokenizer {
+public final class UaxUrlEmailTokenizer extends LexicalTokenizer {
/*
* The maximum token length. Default is 255. Tokens longer than the maximum
* length are split. The maximum token length that can be used is 300
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/UniqueTokenFilter.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/UniqueTokenFilter.java
index 7451661df0773..2b7985ee2699a 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/UniqueTokenFilter.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/UniqueTokenFilter.java
@@ -7,18 +7,16 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
/** Filters out tokens with same text as the previous token. This token filter is implemented using Apache Lucene. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.UniqueTokenFilter")
-@JsonFlatten
@Fluent
-public class UniqueTokenFilter extends TokenFilter {
+public final class UniqueTokenFilter extends TokenFilter {
/*
* A value indicating whether to remove duplicates only at the same
* position. Default is false.
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/WordDelimiterTokenFilter.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/WordDelimiterTokenFilter.java
index 59624d9b8d321..6d11d33ee6872 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/WordDelimiterTokenFilter.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/models/WordDelimiterTokenFilter.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.implementation.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@@ -18,11 +17,10 @@
* Splits words into subwords and performs optional transformations on subword groups. This token filter is implemented
* using Apache Lucene.
*/
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.WordDelimiterTokenFilter")
-@JsonFlatten
@Fluent
-public class WordDelimiterTokenFilter extends TokenFilter {
+public final class WordDelimiterTokenFilter extends TokenFilter {
/*
* A value indicating whether to generate part words. If set, causes parts
* of words to be generated; for example "AzureSearch" becomes "Azure"
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/BM25SimilarityAlgorithm.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/BM25SimilarityAlgorithm.java
index 50db424df7b85..95941ba390973 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/BM25SimilarityAlgorithm.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/BM25SimilarityAlgorithm.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
@@ -17,9 +16,8 @@
* normalization (controlled by the 'b' parameter) as well as term frequency saturation (controlled by the 'k1'
* parameter).
*/
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.BM25Similarity")
-@JsonFlatten
@Fluent
public final class BM25SimilarityAlgorithm extends SimilarityAlgorithm {
/*
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/CharFilter.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/CharFilter.java
index 4271dd1f2f934..5f6f0535cb6ec 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/CharFilter.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/CharFilter.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSubTypes;
@@ -18,7 +17,7 @@
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
- property = "@odata\\.type",
+ property = "@odata.type",
defaultImpl = CharFilter.class)
@JsonTypeName("CharFilter")
@JsonSubTypes({
@@ -27,7 +26,6 @@
name = "#Microsoft.Azure.Search.PatternReplaceCharFilter",
value = PatternReplaceCharFilter.class)
})
-@JsonFlatten
@Fluent
public abstract class CharFilter {
/*
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/ClassicSimilarityAlgorithm.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/ClassicSimilarityAlgorithm.java
index 04e1b468e5e2e..4ce9e25603279 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/ClassicSimilarityAlgorithm.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/ClassicSimilarityAlgorithm.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Immutable;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
@@ -16,8 +15,7 @@
* introduces static document length normalization as well as coordinating factors that penalize documents that only
* partially match the searched queries.
*/
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.ClassicSimilarity")
-@JsonFlatten
@Immutable
public final class ClassicSimilarityAlgorithm extends SimilarityAlgorithm { }
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/CognitiveServicesAccount.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/CognitiveServicesAccount.java
index d09ae490e40df..305dbcb628e43 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/CognitiveServicesAccount.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/CognitiveServicesAccount.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@@ -17,7 +16,7 @@
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
- property = "@odata\\.type",
+ property = "@odata.type",
defaultImpl = CognitiveServicesAccount.class)
@JsonTypeName("CognitiveServicesAccount")
@JsonSubTypes({
@@ -28,7 +27,6 @@
name = "#Microsoft.Azure.Search.CognitiveServicesByKey",
value = CognitiveServicesAccountKey.class)
})
-@JsonFlatten
@Fluent
public abstract class CognitiveServicesAccount {
/*
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/CognitiveServicesAccountKey.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/CognitiveServicesAccountKey.java
index bbe9230a0843e..89d6d0df47b7a 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/CognitiveServicesAccountKey.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/CognitiveServicesAccountKey.java
@@ -7,16 +7,14 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
/** A cognitive service resource provisioned with a key that is attached to a skillset. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.CognitiveServicesByKey")
-@JsonFlatten
@Fluent
public final class CognitiveServicesAccountKey extends CognitiveServicesAccount {
/*
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/ConditionalSkill.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/ConditionalSkill.java
index ab722e61c1972..bc685fba465ee 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/ConditionalSkill.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/ConditionalSkill.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Immutable;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@@ -15,9 +14,8 @@
import java.util.List;
/** A skill that enables scenarios that require a Boolean operation to determine the data to assign to an output. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Skills.Util.ConditionalSkill")
-@JsonFlatten
@Immutable
public final class ConditionalSkill extends SearchIndexerSkill {
/**
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/CustomAnalyzer.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/CustomAnalyzer.java
index 1390b72321621..961cd9757bfe9 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/CustomAnalyzer.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/CustomAnalyzer.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSetter;
@@ -20,9 +19,8 @@
* configuration consisting of a single predefined tokenizer and one or more filters. The tokenizer is responsible for
* breaking text into tokens, and the filters for modifying tokens emitted by the tokenizer.
*/
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.CustomAnalyzer")
-@JsonFlatten
@Fluent
public final class CustomAnalyzer extends LexicalAnalyzer {
/*
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/CustomEntityLookupSkill.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/CustomEntityLookupSkill.java
index d7ac1c994f6f1..58b778f91847b 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/CustomEntityLookupSkill.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/CustomEntityLookupSkill.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSetter;
@@ -16,9 +15,8 @@
import java.util.List;
/** A skill looks for text from a custom, user-defined list of words and phrases. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Skills.Text.CustomEntityLookupSkill")
-@JsonFlatten
@Fluent
public final class CustomEntityLookupSkill extends SearchIndexerSkill {
/*
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/CustomNormalizer.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/CustomNormalizer.java
index ccf577f8adcbb..b7e73f7a09786 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/CustomNormalizer.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/CustomNormalizer.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSetter;
@@ -20,9 +19,8 @@
* strict matching. This is a user-defined configuration consisting of at least one or more filters, which modify the
* token that is stored.
*/
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.CustomNormalizer")
-@JsonFlatten
@Fluent
public final class CustomNormalizer extends LexicalNormalizer {
/*
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/DataChangeDetectionPolicy.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/DataChangeDetectionPolicy.java
index 5151f6ac4099b..94ad111461edb 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/DataChangeDetectionPolicy.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/DataChangeDetectionPolicy.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Immutable;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
@@ -16,7 +15,7 @@
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
- property = "@odata\\.type",
+ property = "@odata.type",
defaultImpl = DataChangeDetectionPolicy.class)
@JsonTypeName("DataChangeDetectionPolicy")
@JsonSubTypes({
@@ -27,6 +26,5 @@
name = "#Microsoft.Azure.Search.SqlIntegratedChangeTrackingPolicy",
value = SqlIntegratedChangeTrackingPolicy.class)
})
-@JsonFlatten
@Immutable
public abstract class DataChangeDetectionPolicy { }
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/DataDeletionDetectionPolicy.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/DataDeletionDetectionPolicy.java
index 64b07de122087..99e364bc54fcf 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/DataDeletionDetectionPolicy.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/DataDeletionDetectionPolicy.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Immutable;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
@@ -16,7 +15,7 @@
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
- property = "@odata\\.type",
+ property = "@odata.type",
defaultImpl = DataDeletionDetectionPolicy.class)
@JsonTypeName("DataDeletionDetectionPolicy")
@JsonSubTypes({
@@ -24,6 +23,5 @@
name = "#Microsoft.Azure.Search.SoftDeleteColumnDeletionDetectionPolicy",
value = SoftDeleteColumnDeletionDetectionPolicy.class)
})
-@JsonFlatten
@Immutable
public abstract class DataDeletionDetectionPolicy { }
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/DefaultCognitiveServicesAccount.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/DefaultCognitiveServicesAccount.java
index 2dc6d6e089ebb..98d77fef234a9 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/DefaultCognitiveServicesAccount.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/DefaultCognitiveServicesAccount.java
@@ -7,13 +7,11 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Immutable;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
/** An empty object that represents the default cognitive service resource for a skillset. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.DefaultCognitiveServices")
-@JsonFlatten
@Immutable
public final class DefaultCognitiveServicesAccount extends CognitiveServicesAccount { }
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/DocumentExtractionSkill.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/DocumentExtractionSkill.java
index 8fd05ef6f0cb9..ba20bcbb9ff79 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/DocumentExtractionSkill.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/DocumentExtractionSkill.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@@ -16,9 +15,8 @@
import java.util.Map;
/** A skill that extracts content from a file within the enrichment pipeline. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Skills.Util.DocumentExtractionSkill")
-@JsonFlatten
@Fluent
public final class DocumentExtractionSkill extends SearchIndexerSkill {
/*
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/EntityRecognitionSkill.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/EntityRecognitionSkill.java
index 95385b2332cd0..1a83c4a0d4ba4 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/EntityRecognitionSkill.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/EntityRecognitionSkill.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSetter;
@@ -16,9 +15,8 @@
import java.util.List;
/** Text analytics entity recognition. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Skills.Text.EntityRecognitionSkill")
-@JsonFlatten
@Fluent
public final class EntityRecognitionSkill extends SearchIndexerSkill {
/*
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/HighWaterMarkChangeDetectionPolicy.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/HighWaterMarkChangeDetectionPolicy.java
index fc9390e83fb5c..f028fa3cc48df 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/HighWaterMarkChangeDetectionPolicy.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/HighWaterMarkChangeDetectionPolicy.java
@@ -7,16 +7,14 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
/** Defines a data change detection policy that captures changes based on the value of a high water mark column. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy")
-@JsonFlatten
@Fluent
public final class HighWaterMarkChangeDetectionPolicy extends DataChangeDetectionPolicy {
/*
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/ImageAnalysisSkill.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/ImageAnalysisSkill.java
index 5060966aa5a86..bd235e0e39833 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/ImageAnalysisSkill.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/ImageAnalysisSkill.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSetter;
@@ -16,9 +15,8 @@
import java.util.List;
/** A skill that analyzes image files. It extracts a rich set of visual features based on the image content. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Skills.Vision.ImageAnalysisSkill")
-@JsonFlatten
@Fluent
public final class ImageAnalysisSkill extends SearchIndexerSkill {
/*
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/KeyPhraseExtractionSkill.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/KeyPhraseExtractionSkill.java
index 0fe25e194355a..581c2b3d1b24a 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/KeyPhraseExtractionSkill.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/KeyPhraseExtractionSkill.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@@ -15,9 +14,8 @@
import java.util.List;
/** A skill that uses text analytics for key phrase extraction. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Skills.Text.KeyPhraseExtractionSkill")
-@JsonFlatten
@Fluent
public final class KeyPhraseExtractionSkill extends SearchIndexerSkill {
/*
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/LanguageDetectionSkill.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/LanguageDetectionSkill.java
index 6ed2891ebe781..909d2a408da45 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/LanguageDetectionSkill.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/LanguageDetectionSkill.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@@ -18,9 +17,8 @@
* A skill that detects the language of input text and reports a single language code for every document submitted on
* the request. The language code is paired with a score indicating the confidence of the analysis.
*/
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Skills.Text.LanguageDetectionSkill")
-@JsonFlatten
@Fluent
public final class LanguageDetectionSkill extends SearchIndexerSkill {
/*
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/LexicalAnalyzer.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/LexicalAnalyzer.java
index f317cd8bcafa9..bd9229d71c30d 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/LexicalAnalyzer.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/LexicalAnalyzer.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSubTypes;
@@ -18,7 +17,7 @@
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
- property = "@odata\\.type",
+ property = "@odata.type",
defaultImpl = LexicalAnalyzer.class)
@JsonTypeName("LexicalAnalyzer")
@JsonSubTypes({
@@ -27,7 +26,6 @@
@JsonSubTypes.Type(name = "#Microsoft.Azure.Search.StandardAnalyzer", value = LuceneStandardAnalyzer.class),
@JsonSubTypes.Type(name = "#Microsoft.Azure.Search.StopAnalyzer", value = StopAnalyzer.class)
})
-@JsonFlatten
@Fluent
public abstract class LexicalAnalyzer {
/*
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/LexicalNormalizer.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/LexicalNormalizer.java
index 8d374823aa96b..80f25e20ea0b4 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/LexicalNormalizer.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/LexicalNormalizer.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSubTypes;
@@ -18,11 +17,10 @@
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
- property = "@odata\\.type",
+ property = "@odata.type",
defaultImpl = LexicalNormalizer.class)
@JsonTypeName("LexicalNormalizer")
@JsonSubTypes({@JsonSubTypes.Type(name = "#Microsoft.Azure.Search.CustomNormalizer", value = CustomNormalizer.class)})
-@JsonFlatten
@Fluent
public class LexicalNormalizer {
/*
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/LuceneStandardAnalyzer.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/LuceneStandardAnalyzer.java
index 337f9733a3647..72481a42f605b 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/LuceneStandardAnalyzer.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/LuceneStandardAnalyzer.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSetter;
@@ -16,9 +15,8 @@
import java.util.List;
/** Standard Apache Lucene analyzer; Composed of the standard tokenizer, lowercase filter and stop filter. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.StandardAnalyzer")
-@JsonFlatten
@Fluent
public final class LuceneStandardAnalyzer extends LexicalAnalyzer {
/*
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/MappingCharFilter.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/MappingCharFilter.java
index 969be6177b879..ecee396da61de 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/MappingCharFilter.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/MappingCharFilter.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@@ -19,9 +18,8 @@
* matching at a given point wins). Replacement is allowed to be the empty string. This character filter is implemented
* using Apache Lucene.
*/
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.MappingCharFilter")
-@JsonFlatten
@Fluent
public final class MappingCharFilter extends CharFilter {
/*
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/MergeSkill.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/MergeSkill.java
index be1f3354d65ea..dadb01a3d8b54 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/MergeSkill.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/MergeSkill.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@@ -18,9 +17,8 @@
* A skill for merging two or more strings into a single unified string, with an optional user-defined delimiter
* separating each component part.
*/
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Skills.Text.MergeSkill")
-@JsonFlatten
@Fluent
public final class MergeSkill extends SearchIndexerSkill {
/*
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/OcrSkill.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/OcrSkill.java
index daa872f9810e4..52680bbb033bd 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/OcrSkill.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/OcrSkill.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@@ -15,9 +14,8 @@
import java.util.List;
/** A skill that extracts text from image files. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Skills.Vision.OcrSkill")
-@JsonFlatten
@Fluent
public final class OcrSkill extends SearchIndexerSkill {
/*
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/PatternAnalyzer.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/PatternAnalyzer.java
index 556aec57fae97..33a7320c87eaa 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/PatternAnalyzer.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/PatternAnalyzer.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSetter;
@@ -20,9 +19,8 @@
* Flexibly separates text into terms via a regular expression pattern. This analyzer is implemented using Apache
* Lucene.
*/
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.PatternAnalyzer")
-@JsonFlatten
@Fluent
public final class PatternAnalyzer extends LexicalAnalyzer {
/*
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/PatternReplaceCharFilter.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/PatternReplaceCharFilter.java
index 003b0fe72fb48..7ca088e2e3473 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/PatternReplaceCharFilter.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/PatternReplaceCharFilter.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@@ -19,9 +18,8 @@
* "aa bb aa bb", pattern "(aa)\s+(bb)", and replacement "$1#$2", the result would be "aa#bb aa#bb". This character
* filter is implemented using Apache Lucene.
*/
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.PatternReplaceCharFilter")
-@JsonFlatten
@Fluent
public final class PatternReplaceCharFilter extends CharFilter {
/*
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SearchIndexerKnowledgeStoreBlobProjectionSelector.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SearchIndexerKnowledgeStoreBlobProjectionSelector.java
index 7a214819a2310..31c96012cef16 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SearchIndexerKnowledgeStoreBlobProjectionSelector.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SearchIndexerKnowledgeStoreBlobProjectionSelector.java
@@ -10,9 +10,12 @@
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
/** Abstract class to share properties between concrete selectors. */
@Fluent
-public class SearchIndexerKnowledgeStoreBlobProjectionSelector extends SearchIndexerKnowledgeStoreProjectionSelector {
+public abstract class SearchIndexerKnowledgeStoreBlobProjectionSelector
+ extends SearchIndexerKnowledgeStoreProjectionSelector {
/*
* Blob container to store projections in.
*/
@@ -38,4 +41,35 @@ public SearchIndexerKnowledgeStoreBlobProjectionSelector(
public String getStorageContainer() {
return this.storageContainer;
}
+
+ @Override
+ public SearchIndexerKnowledgeStoreBlobProjectionSelector setReferenceKeyName(String referenceKeyName) {
+ super.setReferenceKeyName(referenceKeyName);
+ return this;
+ }
+
+ @Override
+ public SearchIndexerKnowledgeStoreBlobProjectionSelector setGeneratedKeyName(String generatedKeyName) {
+ super.setGeneratedKeyName(generatedKeyName);
+ return this;
+ }
+
+ @Override
+ public SearchIndexerKnowledgeStoreBlobProjectionSelector setSource(String source) {
+ super.setSource(source);
+
+ return this;
+ }
+
+ @Override
+ public SearchIndexerKnowledgeStoreBlobProjectionSelector setSourceContext(String sourceContext) {
+ super.setSourceContext(sourceContext);
+ return this;
+ }
+
+ @Override
+ public SearchIndexerKnowledgeStoreBlobProjectionSelector setInputs(List inputs) {
+ super.setInputs(inputs);
+ return this;
+ }
}
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SearchIndexerKnowledgeStoreFileProjectionSelector.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SearchIndexerKnowledgeStoreFileProjectionSelector.java
index 83b3b047dc524..9155139c03354 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SearchIndexerKnowledgeStoreFileProjectionSelector.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SearchIndexerKnowledgeStoreFileProjectionSelector.java
@@ -6,12 +6,14 @@
package com.azure.search.documents.indexes.models;
-import com.azure.core.annotation.Immutable;
+import com.azure.core.annotation.Fluent;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
/** Projection definition for what data to store in Azure Files. */
-@Immutable
+@Fluent
public final class SearchIndexerKnowledgeStoreFileProjectionSelector
extends SearchIndexerKnowledgeStoreBlobProjectionSelector {
/**
@@ -24,4 +26,35 @@ public SearchIndexerKnowledgeStoreFileProjectionSelector(
@JsonProperty(value = "storageContainer", required = true) String storageContainer) {
super(storageContainer);
}
+
+ @Override
+ public SearchIndexerKnowledgeStoreFileProjectionSelector setReferenceKeyName(String referenceKeyName) {
+ super.setReferenceKeyName(referenceKeyName);
+ return this;
+ }
+
+ @Override
+ public SearchIndexerKnowledgeStoreFileProjectionSelector setGeneratedKeyName(String generatedKeyName) {
+ super.setGeneratedKeyName(generatedKeyName);
+ return this;
+ }
+
+ @Override
+ public SearchIndexerKnowledgeStoreFileProjectionSelector setSource(String source) {
+ super.setSource(source);
+
+ return this;
+ }
+
+ @Override
+ public SearchIndexerKnowledgeStoreFileProjectionSelector setSourceContext(String sourceContext) {
+ super.setSourceContext(sourceContext);
+ return this;
+ }
+
+ @Override
+ public SearchIndexerKnowledgeStoreFileProjectionSelector setInputs(List inputs) {
+ super.setInputs(inputs);
+ return this;
+ }
}
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SearchIndexerKnowledgeStoreObjectProjectionSelector.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SearchIndexerKnowledgeStoreObjectProjectionSelector.java
index fcf4653ba14a8..85fe045ba65c1 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SearchIndexerKnowledgeStoreObjectProjectionSelector.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SearchIndexerKnowledgeStoreObjectProjectionSelector.java
@@ -6,12 +6,14 @@
package com.azure.search.documents.indexes.models;
-import com.azure.core.annotation.Immutable;
+import com.azure.core.annotation.Fluent;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
/** Projection definition for what data to store in Azure Blob. */
-@Immutable
+@Fluent
public final class SearchIndexerKnowledgeStoreObjectProjectionSelector
extends SearchIndexerKnowledgeStoreBlobProjectionSelector {
/**
@@ -24,4 +26,35 @@ public SearchIndexerKnowledgeStoreObjectProjectionSelector(
@JsonProperty(value = "storageContainer", required = true) String storageContainer) {
super(storageContainer);
}
+
+ @Override
+ public SearchIndexerKnowledgeStoreObjectProjectionSelector setReferenceKeyName(String referenceKeyName) {
+ super.setReferenceKeyName(referenceKeyName);
+ return this;
+ }
+
+ @Override
+ public SearchIndexerKnowledgeStoreObjectProjectionSelector setGeneratedKeyName(String generatedKeyName) {
+ super.setGeneratedKeyName(generatedKeyName);
+ return this;
+ }
+
+ @Override
+ public SearchIndexerKnowledgeStoreObjectProjectionSelector setSource(String source) {
+ super.setSource(source);
+
+ return this;
+ }
+
+ @Override
+ public SearchIndexerKnowledgeStoreObjectProjectionSelector setSourceContext(String sourceContext) {
+ super.setSourceContext(sourceContext);
+ return this;
+ }
+
+ @Override
+ public SearchIndexerKnowledgeStoreObjectProjectionSelector setInputs(List inputs) {
+ super.setInputs(inputs);
+ return this;
+ }
}
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SearchIndexerKnowledgeStoreProjectionSelector.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SearchIndexerKnowledgeStoreProjectionSelector.java
index 259adb3fe2c99..7f9fc6f3d80ed 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SearchIndexerKnowledgeStoreProjectionSelector.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SearchIndexerKnowledgeStoreProjectionSelector.java
@@ -12,7 +12,7 @@
/** Abstract class to share properties between concrete selectors. */
@Fluent
-public class SearchIndexerKnowledgeStoreProjectionSelector {
+public abstract class SearchIndexerKnowledgeStoreProjectionSelector {
/*
* Name of reference key to different projection.
*/
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SearchIndexerKnowledgeStoreTableProjectionSelector.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SearchIndexerKnowledgeStoreTableProjectionSelector.java
index 12083cefc14ac..d63282bd5b654 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SearchIndexerKnowledgeStoreTableProjectionSelector.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SearchIndexerKnowledgeStoreTableProjectionSelector.java
@@ -10,6 +10,8 @@
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
/** Description for what data to store in Azure Tables. */
@Fluent
public final class SearchIndexerKnowledgeStoreTableProjectionSelector
@@ -39,4 +41,35 @@ public SearchIndexerKnowledgeStoreTableProjectionSelector(
public String getTableName() {
return this.tableName;
}
+
+ @Override
+ public SearchIndexerKnowledgeStoreTableProjectionSelector setReferenceKeyName(String referenceKeyName) {
+ super.setReferenceKeyName(referenceKeyName);
+ return this;
+ }
+
+ @Override
+ public SearchIndexerKnowledgeStoreTableProjectionSelector setGeneratedKeyName(String generatedKeyName) {
+ super.setGeneratedKeyName(generatedKeyName);
+ return this;
+ }
+
+ @Override
+ public SearchIndexerKnowledgeStoreTableProjectionSelector setSource(String source) {
+ super.setSource(source);
+
+ return this;
+ }
+
+ @Override
+ public SearchIndexerKnowledgeStoreTableProjectionSelector setSourceContext(String sourceContext) {
+ super.setSourceContext(sourceContext);
+ return this;
+ }
+
+ @Override
+ public SearchIndexerKnowledgeStoreTableProjectionSelector setInputs(List inputs) {
+ super.setInputs(inputs);
+ return this;
+ }
}
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SearchIndexerSkill.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SearchIndexerSkill.java
index 930e4db000e8d..bfff6f6fad665 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SearchIndexerSkill.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SearchIndexerSkill.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSubTypes;
@@ -19,7 +18,7 @@
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
- property = "@odata\\.type",
+ property = "@odata.type",
defaultImpl = SearchIndexerSkill.class)
@JsonTypeName("SearchIndexerSkill")
@JsonSubTypes({
@@ -40,7 +39,6 @@
@JsonSubTypes.Type(name = "#Microsoft.Skills.Util.DocumentExtractionSkill", value = DocumentExtractionSkill.class),
@JsonSubTypes.Type(name = "#Microsoft.Skills.Custom.WebApiSkill", value = WebApiSkill.class)
})
-@JsonFlatten
@Fluent
public abstract class SearchIndexerSkill {
/*
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SentimentSkill.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SentimentSkill.java
index 899115242e8da..17b8ac6cc04ec 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SentimentSkill.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SentimentSkill.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@@ -15,9 +14,8 @@
import java.util.List;
/** Text analytics positive-negative sentiment analysis, scored as a floating point value in a range of zero to 1. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Skills.Text.SentimentSkill")
-@JsonFlatten
@Fluent
public final class SentimentSkill extends SearchIndexerSkill {
/*
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/ShaperSkill.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/ShaperSkill.java
index 2c17069090a1f..b546f73dc6db2 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/ShaperSkill.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/ShaperSkill.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Immutable;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@@ -18,9 +17,8 @@
* A skill for reshaping the outputs. It creates a complex type to support composite fields (also known as multipart
* fields).
*/
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Skills.Util.ShaperSkill")
-@JsonFlatten
@Immutable
public final class ShaperSkill extends SearchIndexerSkill {
/**
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SimilarityAlgorithm.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SimilarityAlgorithm.java
index dca7eaf3b0ad3..93ba6d074406b 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SimilarityAlgorithm.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SimilarityAlgorithm.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Immutable;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
@@ -20,13 +19,12 @@
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
- property = "@odata\\.type",
+ property = "@odata.type",
defaultImpl = SimilarityAlgorithm.class)
@JsonSubTypes({
@JsonSubTypes.Type(name = "#Microsoft.Azure.Search.ClassicSimilarity", value = ClassicSimilarityAlgorithm.class),
@JsonSubTypes.Type(name = "#Microsoft.Azure.Search.BM25Similarity", value = BM25SimilarityAlgorithm.class)
})
-@JsonFlatten
@Immutable
@JsonTypeName("Similarity")
public abstract class SimilarityAlgorithm { }
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SoftDeleteColumnDeletionDetectionPolicy.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SoftDeleteColumnDeletionDetectionPolicy.java
index eb1494f624005..b52637670deeb 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SoftDeleteColumnDeletionDetectionPolicy.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SoftDeleteColumnDeletionDetectionPolicy.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
@@ -16,9 +15,8 @@
* Defines a data deletion detection policy that implements a soft-deletion strategy. It determines whether an item
* should be deleted based on the value of a designated 'soft delete' column.
*/
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.SoftDeleteColumnDeletionDetectionPolicy")
-@JsonFlatten
@Fluent
public final class SoftDeleteColumnDeletionDetectionPolicy extends DataDeletionDetectionPolicy {
/*
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SplitSkill.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SplitSkill.java
index c51c9ec88b4ab..9c8a58989d4de 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SplitSkill.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SplitSkill.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@@ -15,9 +14,8 @@
import java.util.List;
/** A skill to split a string into chunks of text. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Skills.Text.SplitSkill")
-@JsonFlatten
@Fluent
public final class SplitSkill extends SearchIndexerSkill {
/*
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SqlIntegratedChangeTrackingPolicy.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SqlIntegratedChangeTrackingPolicy.java
index aa26f3f85828b..8fa4e869dce5d 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SqlIntegratedChangeTrackingPolicy.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/SqlIntegratedChangeTrackingPolicy.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Immutable;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
@@ -15,8 +14,7 @@
* Defines a data change detection policy that captures changes using the Integrated Change Tracking feature of Azure
* SQL Database.
*/
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.SqlIntegratedChangeTrackingPolicy")
-@JsonFlatten
@Immutable
public final class SqlIntegratedChangeTrackingPolicy extends DataChangeDetectionPolicy { }
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/StopAnalyzer.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/StopAnalyzer.java
index 0aa80d8b08490..8316a913792ed 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/StopAnalyzer.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/StopAnalyzer.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSetter;
@@ -19,9 +18,8 @@
* Divides text at non-letters; Applies the lowercase and stopword token filters. This analyzer is implemented using
* Apache Lucene.
*/
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.StopAnalyzer")
-@JsonFlatten
@Fluent
public final class StopAnalyzer extends LexicalAnalyzer {
/*
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/TextTranslationSkill.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/TextTranslationSkill.java
index 0f166b7175de5..9014a57729276 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/TextTranslationSkill.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/TextTranslationSkill.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@@ -15,9 +14,8 @@
import java.util.List;
/** A skill to translate text from one language to another. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Skills.Text.TranslationSkill")
-@JsonFlatten
@Fluent
public final class TextTranslationSkill extends SearchIndexerSkill {
/*
diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/WebApiSkill.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/WebApiSkill.java
index 5ae7504fdf49f..873b352a11b1a 100644
--- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/WebApiSkill.java
+++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/WebApiSkill.java
@@ -7,7 +7,6 @@
package com.azure.search.documents.indexes.models;
import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@@ -17,9 +16,8 @@
import java.util.Map;
/** A skill that can call a Web API endpoint, allowing you to extend a skillset by having it call your custom code. */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata\\.type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Skills.Custom.WebApiSkill")
-@JsonFlatten
@Fluent
public final class WebApiSkill extends SearchIndexerSkill {
/*
diff --git a/sdk/search/azure-search-documents/src/samples/README.md b/sdk/search/azure-search-documents/src/samples/README.md
index d34b12c7ae3e9..4cb7e9cd16096 100644
--- a/sdk/search/azure-search-documents/src/samples/README.md
+++ b/sdk/search/azure-search-documents/src/samples/README.md
@@ -29,7 +29,7 @@ Maven dependency for Azure Cognitive Search Client library. Add it to your proje
com.azure
azure-search-documents
- 11.3.2
+ 11.4.0
```
diff --git a/sdk/search/azure-search-documents/swagger/README.md b/sdk/search/azure-search-documents/swagger/README.md
index e0bdf4410462f..702038098a593 100644
--- a/sdk/search/azure-search-documents/swagger/README.md
+++ b/sdk/search/azure-search-documents/swagger/README.md
@@ -118,6 +118,7 @@ license-header: |-
Licensed under the MIT License.
Code generated by Microsoft (R) AutoRest Code Generator.
Changes may cause incorrect behavior and will be lost if the code is regenerated.
+require-x-ms-flattened-to-flatten: true
```
### Set odata.metadata Accept header in operations
diff --git a/sdk/search/azure-search-documents/swagger/src/main/java/SearchServiceCustomizations.java b/sdk/search/azure-search-documents/swagger/src/main/java/SearchServiceCustomizations.java
index dfc791f03ad4f..0dc0c449f5e29 100644
--- a/sdk/search/azure-search-documents/swagger/src/main/java/SearchServiceCustomizations.java
+++ b/sdk/search/azure-search-documents/swagger/src/main/java/SearchServiceCustomizations.java
@@ -40,7 +40,8 @@ public void customize(LibraryCustomization libraryCustomization, Logger logger)
// Change class modifiers to 'public abstract'.
bulkChangeClassModifiers(publicCustomization, PUBLIC_ABSTRACT, "ScoringFunction", "DataChangeDetectionPolicy",
"DataDeletionDetectionPolicy", "CharFilter", "CognitiveServicesAccount", "SearchIndexerSkill",
- "LexicalAnalyzer");
+ "LexicalAnalyzer", "SearchIndexerKnowledgeStoreProjectionSelector",
+ "SearchIndexerKnowledgeStoreBlobProjectionSelector");
// Change class modifiers to 'public final'.
bulkChangeClassModifiers(publicCustomization, PUBLIC_FINAL, "BM25SimilarityAlgorithm",
@@ -75,6 +76,14 @@ public void customize(LibraryCustomization libraryCustomization, Logger logger)
customizeLuceneStandardAnalyzer(publicCustomization.getClass("LuceneStandardAnalyzer"));
customizeStopAnalyzer(publicCustomization.getClass("StopAnalyzer"));
customizeSearchIndexerSkillset(publicCustomization.getClass("SearchIndexerSkillset"));
+ customizeSearchIndexerKnowledgeStoreBlobProjectionSelector(
+ publicCustomization.getClass("SearchIndexerKnowledgeStoreBlobProjectionSelector"));
+ customizeSearchIndexerKnowledgeStoreFileProjectionSelector(
+ publicCustomization.getClass("SearchIndexerKnowledgeStoreFileProjectionSelector"));
+ customizeSearchIndexerKnowledgeStoreObjectProjectionSelector(
+ publicCustomization.getClass("SearchIndexerKnowledgeStoreObjectProjectionSelector"));
+ customizeSearchIndexerKnowledgeStoreTableProjectionSelector(
+ publicCustomization.getClass("SearchIndexerKnowledgeStoreTableProjectionSelector"));
}
private void customizeSearchFieldDataType(ClassCustomization classCustomization) {
@@ -347,6 +356,60 @@ private void customizeSearchIndexerSkillset(ClassCustomization classCustomizatio
addVarArgsOverload(classCustomization, "skills", "SearchIndexerSkill");
}
+ private void customizeSearchIndexerKnowledgeStoreBlobProjectionSelector(ClassCustomization classCustomization) {
+ addKnowledgeStoreProjectionFluentSetterOverrides(classCustomization);
+ }
+
+ private void customizeSearchIndexerKnowledgeStoreFileProjectionSelector(ClassCustomization classCustomization) {
+ classCustomization.removeAnnotation("@Immutable");
+ classCustomization.addAnnotation("@Fluent");
+ addKnowledgeStoreProjectionFluentSetterOverrides(classCustomization);
+ }
+
+ private void customizeSearchIndexerKnowledgeStoreObjectProjectionSelector(ClassCustomization classCustomization) {
+ classCustomization.removeAnnotation("@Immutable");
+ classCustomization.addAnnotation("@Fluent");
+ addKnowledgeStoreProjectionFluentSetterOverrides(classCustomization);
+ }
+
+ private void customizeSearchIndexerKnowledgeStoreTableProjectionSelector(ClassCustomization classCustomization) {
+ addKnowledgeStoreProjectionFluentSetterOverrides(classCustomization);
+ }
+
+ private void addKnowledgeStoreProjectionFluentSetterOverrides(ClassCustomization classCustomization) {
+ String className = classCustomization.getClassName();
+
+ classCustomization.addMethod(joinWithNewline(
+ String.format("public %s setReferenceKeyName(String referenceKeyName) {", className),
+ " super.setReferenceKeyName(referenceKeyName);",
+ " return this;",
+ "}")).addAnnotation("@Override");
+
+ classCustomization.addMethod(joinWithNewline(
+ String.format("public %s setGeneratedKeyName(String generatedKeyName) {", className),
+ " super.setGeneratedKeyName(generatedKeyName);",
+ " return this;",
+ "}")).addAnnotation("@Override");
+
+ classCustomization.addMethod(joinWithNewline(
+ String.format("public %s setSource(String source) {", className),
+ " super.setSource(source);\n",
+ " return this;\n",
+ "}")).addAnnotation("@Override");
+
+ classCustomization.addMethod(joinWithNewline(
+ String.format("public %s setSourceContext(String sourceContext) {", className),
+ " super.setSourceContext(sourceContext);",
+ " return this;",
+ "}")).addAnnotation("@Override");
+
+ classCustomization.addMethod(joinWithNewline(
+ String.format("public %s setInputs(List inputs) {", className),
+ " super.setInputs(inputs);",
+ " return this;",
+ "}")).addAnnotation("@Override");
+ }
+
private static void bulkChangeClassModifiers(PackageCustomization packageCustomization, int modifier,
String... classNames) {
if (classNames == null) {
diff --git a/sdk/search/azure-search-perf/pom.xml b/sdk/search/azure-search-perf/pom.xml
index 789f7f98fdb1b..4121df10ee73b 100644
--- a/sdk/search/azure-search-perf/pom.xml
+++ b/sdk/search/azure-search-perf/pom.xml
@@ -32,7 +32,7 @@
com.azure
azure-search-documents
- 11.4.0-beta.3
+ 11.5.0-beta.1
diff --git a/sdk/search/pom.xml b/sdk/search/pom.xml
index 75cc749d57f7a..a31fa4944a085 100644
--- a/sdk/search/pom.xml
+++ b/sdk/search/pom.xml
@@ -19,7 +19,7 @@
com.azure
azure-search-documents
- 11.4.0-beta.3
+ 11.5.0-beta.1
diff --git a/sdk/servicebus/azure-messaging-servicebus/pom.xml b/sdk/servicebus/azure-messaging-servicebus/pom.xml
index 30d24c989d1d1..e8c8dc03adce1 100644
--- a/sdk/servicebus/azure-messaging-servicebus/pom.xml
+++ b/sdk/servicebus/azure-messaging-servicebus/pom.xml
@@ -71,7 +71,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/ServiceBusMessageBatch.java b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/ServiceBusMessageBatch.java
index a3ddce1cb7395..d3a3c4d9176bc 100644
--- a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/ServiceBusMessageBatch.java
+++ b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/ServiceBusMessageBatch.java
@@ -11,10 +11,12 @@
import com.azure.core.util.logging.ClientLogger;
import java.nio.BufferOverflowException;
+import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
+import java.util.concurrent.atomic.AtomicInteger;
import static com.azure.messaging.servicebus.implementation.MessageUtils.traceMessageSpan;
@@ -30,7 +32,7 @@ public final class ServiceBusMessageBatch {
private final MessageSerializer serializer;
private final List serviceBusMessageList;
private final byte[] eventBytes;
- private int sizeInBytes;
+ private final AtomicInteger sizeInBytes;
private final TracerProvider tracerProvider;
private final String entityPath;
private final String hostname;
@@ -40,8 +42,8 @@ public final class ServiceBusMessageBatch {
this.maxMessageSize = maxMessageSize;
this.contextProvider = contextProvider;
this.serializer = serializer;
- this.serviceBusMessageList = new LinkedList<>();
- this.sizeInBytes = (maxMessageSize / 65536) * 1024; // reserve 1KB for every 64KB
+ this.serviceBusMessageList = Collections.synchronizedList(new LinkedList<>());
+ this.sizeInBytes = new AtomicInteger((maxMessageSize / 65536) * 1024); // reserve 1KB for every 64KB
this.eventBytes = new byte[maxMessageSize];
this.tracerProvider = tracerProvider;
this.entityPath = entityPath;
@@ -72,7 +74,7 @@ public int getMaxSizeInBytes() {
* @return The size of the {@link ServiceBusMessageBatch batch} in bytes.
*/
public int getSizeInBytes() {
- return this.sizeInBytes;
+ return this.sizeInBytes.get();
}
/**
@@ -97,9 +99,9 @@ public boolean tryAddMessage(final ServiceBusMessage serviceBusMessage) {
tracerProvider)
: serviceBusMessage;
- final int size;
+ final AtomicInteger size = new AtomicInteger();
try {
- size = getSize(serviceBusMessageUpdated, serviceBusMessageList.isEmpty());
+ size.set(getSize(serviceBusMessageUpdated, serviceBusMessageList.isEmpty()));
} catch (BufferOverflowException exception) {
final RuntimeException ex = new ServiceBusException(
new AmqpException(false, AmqpErrorCondition.LINK_PAYLOAD_SIZE_EXCEEDED,
@@ -109,12 +111,9 @@ public boolean tryAddMessage(final ServiceBusMessage serviceBusMessage) {
throw logger.logExceptionAsWarning(ex);
}
- synchronized (lock) {
- if (this.sizeInBytes + size > this.maxMessageSize) {
- return false;
- }
-
- this.sizeInBytes += size;
+ if (this.sizeInBytes.addAndGet(size.get()) > this.maxMessageSize) {
+ this.sizeInBytes.addAndGet(-1 * size.get());
+ return false;
}
this.serviceBusMessageList.add(serviceBusMessageUpdated);
diff --git a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/ServiceBusSenderAsyncClient.java b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/ServiceBusSenderAsyncClient.java
index edd9ca0cd71c8..89db203b728a2 100644
--- a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/ServiceBusSenderAsyncClient.java
+++ b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/ServiceBusSenderAsyncClient.java
@@ -42,6 +42,7 @@
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Collector;
+import java.util.stream.StreamSupport;
import static com.azure.core.amqp.implementation.RetryUtil.getRetryPolicy;
import static com.azure.core.amqp.implementation.RetryUtil.withRetry;
@@ -574,7 +575,8 @@ private Mono sendIterable(Iterable messages, ServiceBus
}
return createMessageBatch().flatMap(messageBatch -> {
- messages.forEach(message -> messageBatch.tryAddMessage(message));
+ StreamSupport.stream(messages.spliterator(), true)
+ .forEach(message -> messageBatch.tryAddMessage(message));
return sendInternal(messageBatch, transaction);
});
}
@@ -635,32 +637,29 @@ private Mono sendInternal(ServiceBusMessageBatch batch, ServiceBusTransact
logger.info("Sending batch with size[{}].", batch.getCount());
- Context sharedContext = null;
- final List messages = new ArrayList<>();
-
- for (int i = 0; i < batch.getMessages().size(); i++) {
- final ServiceBusMessage event = batch.getMessages().get(i);
+ AtomicReference sharedContext = new AtomicReference<>(Context.NONE);
+ final List messages = Collections.synchronizedList(new ArrayList<>());
+ batch.getMessages().parallelStream().forEach(serviceBusMessage -> {
if (isTracingEnabled) {
- parentContext.set(event.getContext());
- if (i == 0) {
- sharedContext = tracerProvider.getSharedSpanBuilder(SERVICE_BASE_NAME, parentContext.get());
+ parentContext.set(serviceBusMessage.getContext());
+ if (sharedContext.get().equals(Context.NONE)) {
+ sharedContext.set(tracerProvider.getSharedSpanBuilder(SERVICE_BASE_NAME, parentContext.get()));
}
- tracerProvider.addSpanLinks(sharedContext.addData(SPAN_CONTEXT_KEY, event.getContext()));
+ tracerProvider.addSpanLinks(sharedContext.get().addData(SPAN_CONTEXT_KEY, serviceBusMessage.getContext()));
}
- final org.apache.qpid.proton.message.Message message = messageSerializer.serialize(event);
-
+ final org.apache.qpid.proton.message.Message message = messageSerializer.serialize(serviceBusMessage);
final MessageAnnotations messageAnnotations = message.getMessageAnnotations() == null
? new MessageAnnotations(new HashMap<>())
: message.getMessageAnnotations();
message.setMessageAnnotations(messageAnnotations);
messages.add(message);
- }
+ });
if (isTracingEnabled) {
- final Context finalSharedContext = sharedContext == null
+ final Context finalSharedContext = sharedContext.get().equals(Context.NONE)
? Context.NONE
- : sharedContext
+ : sharedContext.get()
.addData(ENTITY_PATH_KEY, entityName)
.addData(HOST_NAME_KEY, connectionProcessor.getFullyQualifiedNamespace())
.addData(AZ_TRACING_NAMESPACE_KEY, AZ_TRACING_NAMESPACE_VALUE);
diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/java/com/azure/messaging/servicebus/ServiceBusProcessorTest.java b/sdk/servicebus/azure-messaging-servicebus/src/test/java/com/azure/messaging/servicebus/ServiceBusProcessorTest.java
index 0083295383480..acea91b3ab09c 100644
--- a/sdk/servicebus/azure-messaging-servicebus/src/test/java/com/azure/messaging/servicebus/ServiceBusProcessorTest.java
+++ b/sdk/servicebus/azure-messaging-servicebus/src/test/java/com/azure/messaging/servicebus/ServiceBusProcessorTest.java
@@ -194,7 +194,6 @@ public void testStartStopResume() throws InterruptedException {
*/
@Test
public void testErrorRecovery() throws InterruptedException {
-
List messageList = new ArrayList<>();
for (int i = 0; i < 2; i++) {
ServiceBusReceivedMessage serviceBusReceivedMessage =
@@ -204,6 +203,7 @@ public void testErrorRecovery() throws InterruptedException {
new ServiceBusMessageContext(serviceBusReceivedMessage);
messageList.add(serviceBusMessageContext);
}
+
final Flux messageFlux = Flux.generate(() -> 0,
(state, sink) -> {
ServiceBusReceivedMessage serviceBusReceivedMessage =
@@ -220,11 +220,9 @@ public void testErrorRecovery() throws InterruptedException {
});
ServiceBusClientBuilder.ServiceBusReceiverClientBuilder receiverBuilder = getBuilder(messageFlux);
-
AtomicInteger messageId = new AtomicInteger();
AtomicReference countDownLatch = new AtomicReference<>();
countDownLatch.set(new CountDownLatch(4));
-
AtomicBoolean assertionFailed = new AtomicBoolean();
StringBuffer messageIdNotMatched = new StringBuffer();
ServiceBusProcessorClient serviceBusProcessorClient = new ServiceBusProcessorClient(receiverBuilder,
diff --git a/sdk/spring/azure-identity-spring/pom.xml b/sdk/spring/azure-identity-spring/pom.xml
index 2a6d39cb9f6ef..7105195075277 100644
--- a/sdk/spring/azure-identity-spring/pom.xml
+++ b/sdk/spring/azure-identity-spring/pom.xml
@@ -39,7 +39,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
diff --git a/sdk/spring/azure-spring-boot-starter-keyvault-secrets/pom.xml b/sdk/spring/azure-spring-boot-starter-keyvault-secrets/pom.xml
index 14ead628d06dd..f589912090f15 100644
--- a/sdk/spring/azure-spring-boot-starter-keyvault-secrets/pom.xml
+++ b/sdk/spring/azure-spring-boot-starter-keyvault-secrets/pom.xml
@@ -38,7 +38,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
com.azure
diff --git a/sdk/spring/azure-spring-boot-starter-storage/pom.xml b/sdk/spring/azure-spring-boot-starter-storage/pom.xml
index 2f7c8650ff29e..d293c0daf8f58 100644
--- a/sdk/spring/azure-spring-boot-starter-storage/pom.xml
+++ b/sdk/spring/azure-spring-boot-starter-storage/pom.xml
@@ -36,13 +36,13 @@
com.azure
azure-storage-blob
- 12.11.1
+ 12.12.0
com.azure
azure-storage-file-share
- 12.9.1
+ 12.10.0
diff --git a/sdk/spring/azure-spring-boot/pom.xml b/sdk/spring/azure-spring-boot/pom.xml
index f2c1908bebec6..da83223bd546e 100644
--- a/sdk/spring/azure-spring-boot/pom.xml
+++ b/sdk/spring/azure-spring-boot/pom.xml
@@ -157,7 +157,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
true
@@ -172,14 +172,14 @@
com.azure
azure-storage-blob
- 12.11.1
+ 12.12.0
true
com.azure
azure-storage-file-share
- 12.9.1
+ 12.10.0
true
diff --git a/sdk/spring/azure-spring-cloud-storage/pom.xml b/sdk/spring/azure-spring-cloud-storage/pom.xml
index 11916e74c15a3..c68d6148fb2cd 100644
--- a/sdk/spring/azure-spring-cloud-storage/pom.xml
+++ b/sdk/spring/azure-spring-cloud-storage/pom.xml
@@ -37,7 +37,7 @@
com.azure
azure-storage-queue
- 12.9.1
+ 12.10.0
true
diff --git a/sdk/spring/azure-spring-integration-storage-queue/pom.xml b/sdk/spring/azure-spring-integration-storage-queue/pom.xml
index d5db5a406eedf..8587b981c62ca 100644
--- a/sdk/spring/azure-spring-integration-storage-queue/pom.xml
+++ b/sdk/spring/azure-spring-integration-storage-queue/pom.xml
@@ -38,7 +38,7 @@
com.azure
azure-storage-queue
- 12.9.1
+ 12.10.0
+ 12.11.0-beta.1
Microsoft Azure client library for Blob Storage batching
This module contains client library for Microsoft Azure Blob Storage batching.
@@ -65,7 +65,7 @@
com.azure
azure-storage-blob
- 12.12.0
+ 12.13.0-beta.1
+ 12.13.0-beta.1
tests
test-jar
test
@@ -95,7 +95,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/storage/azure-storage-blob-changefeed/CHANGELOG.md b/sdk/storage/azure-storage-blob-changefeed/CHANGELOG.md
index 2324df83dd2bb..b3f85b43a09d2 100644
--- a/sdk/storage/azure-storage-blob-changefeed/CHANGELOG.md
+++ b/sdk/storage/azure-storage-blob-changefeed/CHANGELOG.md
@@ -1,5 +1,8 @@
# Release History
+## 12.0.0-beta.8 (Unreleased)
+
+
## 12.0.0-beta.7 (2021-06-09)
### Dependency updates
diff --git a/sdk/storage/azure-storage-blob-changefeed/pom.xml b/sdk/storage/azure-storage-blob-changefeed/pom.xml
index eed81ef49223e..2faac9993e50d 100644
--- a/sdk/storage/azure-storage-blob-changefeed/pom.xml
+++ b/sdk/storage/azure-storage-blob-changefeed/pom.xml
@@ -13,7 +13,7 @@
com.azure
azure-storage-blob-changefeed
- 12.0.0-beta.7
+ 12.0.0-beta.8
Microsoft Azure client library for Blob Storage changefeed
This module contains client library for Microsoft Azure Blob Storage changefeed.
@@ -65,7 +65,7 @@
com.azure
azure-storage-blob
- 12.12.0
+ 12.13.0-beta.1
+ 12.13.0-beta.1
tests
test-jar
test
@@ -95,7 +95,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/storage/azure-storage-blob-cryptography/CHANGELOG.md b/sdk/storage/azure-storage-blob-cryptography/CHANGELOG.md
index e74a85caa2bb7..1f359d6a34f8b 100644
--- a/sdk/storage/azure-storage-blob-cryptography/CHANGELOG.md
+++ b/sdk/storage/azure-storage-blob-cryptography/CHANGELOG.md
@@ -1,5 +1,8 @@
# Release History
+## 12.13.0-beta.1 (Unreleased)
+
+
## 12.12.0 (2021-06-09)
- GA release
diff --git a/sdk/storage/azure-storage-blob-cryptography/pom.xml b/sdk/storage/azure-storage-blob-cryptography/pom.xml
index 7f8ca743a58b8..b50187d95ae60 100644
--- a/sdk/storage/azure-storage-blob-cryptography/pom.xml
+++ b/sdk/storage/azure-storage-blob-cryptography/pom.xml
@@ -13,7 +13,11 @@
com.azure
azure-storage-blob-cryptography
+<<<<<<< HEAD
12.12.0
+=======
+ 12.13.0-beta.1
+>>>>>>> master
Microsoft Azure client library for Blob Storage cryptography
This module contains client library for Microsoft Azure Blob Storage cryptography.
@@ -51,12 +55,20 @@
com.azure
azure-storage-blob
+<<<<<<< HEAD
12.12.0
+=======
+ 12.13.0-beta.1
+>>>>>>> master
com.azure
azure-storage-common
+<<<<<<< HEAD
12.12.0
+=======
+ 12.13.0-beta.1
+>>>>>>> master
tests
test-jar
test
@@ -111,7 +123,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/storage/azure-storage-blob-nio/CHANGELOG.md b/sdk/storage/azure-storage-blob-nio/CHANGELOG.md
index 3aa1cafd8b552..06bed757b933b 100644
--- a/sdk/storage/azure-storage-blob-nio/CHANGELOG.md
+++ b/sdk/storage/azure-storage-blob-nio/CHANGELOG.md
@@ -1,5 +1,8 @@
# Release History
+## 12.0.0-beta.8 (Unreleased)
+
+
## 12.0.0-beta.7 (2021-06-09)
### Dependency Updates
- Updated `azure-storage-blob` to version `12.12.0`
diff --git a/sdk/storage/azure-storage-blob-nio/pom.xml b/sdk/storage/azure-storage-blob-nio/pom.xml
index 122c59afd91f4..b07acc0382704 100644
--- a/sdk/storage/azure-storage-blob-nio/pom.xml
+++ b/sdk/storage/azure-storage-blob-nio/pom.xml
@@ -13,7 +13,7 @@
com.azure
azure-storage-blob-nio
- 12.0.0-beta.7
+ 12.0.0-beta.8
Microsoft Azure implementation of NIO on top of Azure Blob Storage
This module contains an implementation of Java's NIO interface on top of Azure Blob Storage.
https://github.com/Azure/azure-sdk-for-java
@@ -64,13 +64,13 @@
com.azure
azure-storage-blob
- 12.12.0
+ 12.13.0-beta.1
com.azure
azure-storage-common
- 12.12.0
+ 12.13.0-beta.1
tests
test-jar
test
diff --git a/sdk/storage/azure-storage-blob/CHANGELOG.md b/sdk/storage/azure-storage-blob/CHANGELOG.md
index 9b25f6c5bb108..d06d497eddded 100644
--- a/sdk/storage/azure-storage-blob/CHANGELOG.md
+++ b/sdk/storage/azure-storage-blob/CHANGELOG.md
@@ -1,5 +1,8 @@
# Release History
+## 12.13.0-beta.1 (Unreleased)
+
+
## 12.12.0 (2021-06-09)
- GA release
diff --git a/sdk/storage/azure-storage-blob/pom.xml b/sdk/storage/azure-storage-blob/pom.xml
index 82f53febf6540..5e08396ea43ab 100644
--- a/sdk/storage/azure-storage-blob/pom.xml
+++ b/sdk/storage/azure-storage-blob/pom.xml
@@ -13,7 +13,7 @@
com.azure
azure-storage-blob
- 12.12.0
+ 12.13.0-beta.1
Microsoft Azure client library for Blob Storage
This module contains client library for Microsoft Azure Blob Storage.
@@ -65,12 +65,12 @@
com.azure
azure-storage-common
- 12.12.0
+ 12.13.0-beta.1
com.azure
azure-storage-internal-avro
- 12.0.5
+ 12.1.0-beta.1
+ 12.13.0-beta.1
tests
test-jar
test
@@ -99,7 +99,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/storage/azure-storage-common/CHANGELOG.md b/sdk/storage/azure-storage-common/CHANGELOG.md
index 62e3d35c3fc5d..6b71292b15bad 100644
--- a/sdk/storage/azure-storage-common/CHANGELOG.md
+++ b/sdk/storage/azure-storage-common/CHANGELOG.md
@@ -1,5 +1,8 @@
# Release History
+## 12.13.0-beta.1 (Unreleased)
+
+
## 12.12.0 (2021-06-09)
- GA release
diff --git a/sdk/storage/azure-storage-common/pom.xml b/sdk/storage/azure-storage-common/pom.xml
index deec64ca9ecfa..9fb44f1242b44 100644
--- a/sdk/storage/azure-storage-common/pom.xml
+++ b/sdk/storage/azure-storage-common/pom.xml
@@ -13,7 +13,7 @@
com.azure
azure-storage-common
- 12.12.0
+ 12.13.0-beta.1
Microsoft Azure common module for Storage
This module contains common code based for all Microsoft Azure Storage client libraries.
@@ -68,7 +68,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/storage/azure-storage-file-datalake/CHANGELOG.md b/sdk/storage/azure-storage-file-datalake/CHANGELOG.md
index 32f57bf8105f7..00646b7d67995 100644
--- a/sdk/storage/azure-storage-file-datalake/CHANGELOG.md
+++ b/sdk/storage/azure-storage-file-datalake/CHANGELOG.md
@@ -1,5 +1,8 @@
# Release History
+## 12.7.0-beta.1 (Unreleased)
+
+
## 12.6.0 (2021-06-09)
- GA release
diff --git a/sdk/storage/azure-storage-file-datalake/pom.xml b/sdk/storage/azure-storage-file-datalake/pom.xml
index 0425867b65751..056b9c60ffeb6 100644
--- a/sdk/storage/azure-storage-file-datalake/pom.xml
+++ b/sdk/storage/azure-storage-file-datalake/pom.xml
@@ -13,7 +13,7 @@
com.azure
azure-storage-file-datalake
- 12.6.0
+ 12.7.0-beta.1
Microsoft Azure client library for File Storage Data Lake
This module contains client library for Microsoft Azure File Storage Data Lake.
@@ -65,7 +65,7 @@
com.azure
azure-storage-blob
- 12.12.0
+ 12.13.0-beta.1
+ 12.13.0-beta.1
tests
test-jar
test
@@ -95,7 +95,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/storage/azure-storage-file-share/CHANGELOG.md b/sdk/storage/azure-storage-file-share/CHANGELOG.md
index 2df27a5f4df70..09b66dafcbc3a 100644
--- a/sdk/storage/azure-storage-file-share/CHANGELOG.md
+++ b/sdk/storage/azure-storage-file-share/CHANGELOG.md
@@ -1,5 +1,8 @@
# Release History
+## 12.11.0-beta.1 (Unreleased)
+
+
## 12.10.0 (2021-06-09)
- GA release
diff --git a/sdk/storage/azure-storage-file-share/pom.xml b/sdk/storage/azure-storage-file-share/pom.xml
index e9078cdcd0286..adf240b6846d6 100644
--- a/sdk/storage/azure-storage-file-share/pom.xml
+++ b/sdk/storage/azure-storage-file-share/pom.xml
@@ -13,7 +13,7 @@
com.azure
azure-storage-file-share
- 12.10.0
+ 12.11.0-beta.1
Microsoft Azure client library for File Share Storage
This module contains client library for Microsoft Azure File Share Storage.
@@ -46,12 +46,12 @@
com.azure
azure-storage-common
- 12.12.0
+ 12.13.0-beta.1
com.azure
azure-storage-common
- 12.12.0
+ 12.13.0-beta.1
tests
test-jar
test
diff --git a/sdk/storage/azure-storage-internal-avro/CHANGELOG.md b/sdk/storage/azure-storage-internal-avro/CHANGELOG.md
index 34b3221dc8c1f..7aed71ded407c 100644
--- a/sdk/storage/azure-storage-internal-avro/CHANGELOG.md
+++ b/sdk/storage/azure-storage-internal-avro/CHANGELOG.md
@@ -1,5 +1,8 @@
# Release History
+## 12.1.0-beta.1 (Unreleased)
+
+
## 12.0.5 (2021-06-09)
### Dependency Updates
- Updated `azure-storage-common` to version `12.12.0`
diff --git a/sdk/storage/azure-storage-internal-avro/pom.xml b/sdk/storage/azure-storage-internal-avro/pom.xml
index 40ad06d521567..19a4dc2a26b55 100644
--- a/sdk/storage/azure-storage-internal-avro/pom.xml
+++ b/sdk/storage/azure-storage-internal-avro/pom.xml
@@ -13,7 +13,7 @@
com.azure
azure-storage-internal-avro
- 12.0.5
+ 12.1.0-beta.1
Microsoft Azure internal Avro module for Storage
This module contains internal use only avro parser code based for Microsoft Azure Storage client libraries.
@@ -51,7 +51,7 @@
com.azure
azure-storage-common
- 12.12.0
+ 12.13.0-beta.1
io.projectreactor
@@ -68,7 +68,7 @@
com.azure
azure-storage-common
- 12.12.0
+ 12.13.0-beta.1
tests
test-jar
test
diff --git a/sdk/storage/azure-storage-perf/pom.xml b/sdk/storage/azure-storage-perf/pom.xml
index 659001af8648b..3b0f95c7a066b 100644
--- a/sdk/storage/azure-storage-perf/pom.xml
+++ b/sdk/storage/azure-storage-perf/pom.xml
@@ -27,19 +27,19 @@
com.azure
azure-storage-blob
- 12.12.0
+ 12.13.0-beta.1
com.azure
azure-storage-file-datalake
- 12.6.0
+ 12.7.0-beta.1
com.azure
azure-storage-file-share
- 12.10.0
+ 12.11.0-beta.1
diff --git a/sdk/storage/azure-storage-queue/CHANGELOG.md b/sdk/storage/azure-storage-queue/CHANGELOG.md
index 0a61a219e4738..f6593ad5e06da 100644
--- a/sdk/storage/azure-storage-queue/CHANGELOG.md
+++ b/sdk/storage/azure-storage-queue/CHANGELOG.md
@@ -1,5 +1,8 @@
# Release History
+## 12.11.0-beta.1 (Unreleased)
+
+
## 12.10.0 (2021-06-09)
- GA release
diff --git a/sdk/storage/azure-storage-queue/pom.xml b/sdk/storage/azure-storage-queue/pom.xml
index d6a65074985fd..bff62297aac89 100644
--- a/sdk/storage/azure-storage-queue/pom.xml
+++ b/sdk/storage/azure-storage-queue/pom.xml
@@ -13,7 +13,7 @@
com.azure
azure-storage-queue
- 12.10.0
+ 12.11.0-beta.1
Microsoft Azure client library for Queue Storage
This module contains client library for Microsoft Azure Queue Storage.
@@ -46,12 +46,12 @@
com.azure
azure-storage-common
- 12.12.0
+ 12.13.0-beta.1
com.azure
azure-storage-common
- 12.12.0
+ 12.13.0-beta.1
tests
test-jar
test
@@ -78,7 +78,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/storage/pom.xml b/sdk/storage/pom.xml
index 506857b48ae69..56d621d2dd859 100644
--- a/sdk/storage/pom.xml
+++ b/sdk/storage/pom.xml
@@ -27,52 +27,52 @@
com.azure
azure-storage-common
- 12.12.0
+ 12.13.0-beta.1
com.azure
azure-storage-blob
- 12.12.0
+ 12.13.0-beta.1
com.azure
azure-storage-blob-batch
- 12.10.0
+ 12.11.0-beta.1
com.azure
azure-storage-blob-changefeed
- 12.0.0-beta.7
+ 12.0.0-beta.8
com.azure
azure-storage-blob-cryptography
- 12.12.0
+ 12.13.0-beta.1
com.azure
azure-storage-blob-nio
- 12.0.0-beta.7
+ 12.0.0-beta.8
com.azure
azure-storage-file-share
- 12.10.0
+ 12.11.0-beta.1
com.azure
azure-storage-file-datalake
- 12.6.0
+ 12.7.0-beta.1
com.azure
azure-storage-internal-avro
- 12.0.5
+ 12.1.0-beta.1
com.azure
azure-storage-queue
- 12.10.0
+ 12.11.0-beta.1
diff --git a/sdk/synapse/azure-analytics-synapse-accesscontrol/pom.xml b/sdk/synapse/azure-analytics-synapse-accesscontrol/pom.xml
index f29e83346f8ba..aaaecab1d904d 100644
--- a/sdk/synapse/azure-analytics-synapse-accesscontrol/pom.xml
+++ b/sdk/synapse/azure-analytics-synapse-accesscontrol/pom.xml
@@ -83,7 +83,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/synapse/azure-analytics-synapse-artifacts/pom.xml b/sdk/synapse/azure-analytics-synapse-artifacts/pom.xml
index 46fd69e6c2287..3e6b77952f6cc 100644
--- a/sdk/synapse/azure-analytics-synapse-artifacts/pom.xml
+++ b/sdk/synapse/azure-analytics-synapse-artifacts/pom.xml
@@ -83,7 +83,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/synapse/azure-analytics-synapse-managedprivateendpoints/pom.xml b/sdk/synapse/azure-analytics-synapse-managedprivateendpoints/pom.xml
index 42fe8e8e9a239..edf925af650c9 100644
--- a/sdk/synapse/azure-analytics-synapse-managedprivateendpoints/pom.xml
+++ b/sdk/synapse/azure-analytics-synapse-managedprivateendpoints/pom.xml
@@ -83,7 +83,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/synapse/azure-analytics-synapse-monitoring/pom.xml b/sdk/synapse/azure-analytics-synapse-monitoring/pom.xml
index 49db98eb61b71..13fb9185069b5 100644
--- a/sdk/synapse/azure-analytics-synapse-monitoring/pom.xml
+++ b/sdk/synapse/azure-analytics-synapse-monitoring/pom.xml
@@ -83,7 +83,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/synapse/azure-analytics-synapse-spark/pom.xml b/sdk/synapse/azure-analytics-synapse-spark/pom.xml
index e67d032a283d6..aee2b9d609069 100644
--- a/sdk/synapse/azure-analytics-synapse-spark/pom.xml
+++ b/sdk/synapse/azure-analytics-synapse-spark/pom.xml
@@ -83,7 +83,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/tables/azure-data-tables/src/main/java/com/azure/data/tables/BuilderHelper.java b/sdk/tables/azure-data-tables/src/main/java/com/azure/data/tables/BuilderHelper.java
index 788e5d1fb9fa6..7e6473337ea02 100644
--- a/sdk/tables/azure-data-tables/src/main/java/com/azure/data/tables/BuilderHelper.java
+++ b/sdk/tables/azure-data-tables/src/main/java/com/azure/data/tables/BuilderHelper.java
@@ -76,9 +76,6 @@ static HttpPipeline buildPipeline(
httpHeaderList.add(new HttpHeader(header.getName(), header.getValue())));
}
- // TODO: Remove the Accept header after making sure the JacksonAdapter can handle not setting such value.
- policies.add(new AddHeadersPolicy(new HttpHeaders(httpHeaderList).set("Accept", "application/json")));
-
// Add per call additional policies.
policies.addAll(perCallAdditionalPolicies);
HttpPolicyProviders.addBeforeRetryPolicies(policies);
diff --git a/sdk/tables/azure-data-tables/src/main/java/com/azure/data/tables/TableAsyncClient.java b/sdk/tables/azure-data-tables/src/main/java/com/azure/data/tables/TableAsyncClient.java
index 33d3b65397797..3bff81252beb2 100644
--- a/sdk/tables/azure-data-tables/src/main/java/com/azure/data/tables/TableAsyncClient.java
+++ b/sdk/tables/azure-data-tables/src/main/java/com/azure/data/tables/TableAsyncClient.java
@@ -11,7 +11,6 @@
import com.azure.core.http.HttpRequest;
import com.azure.core.http.rest.PagedFlux;
import com.azure.core.http.rest.PagedResponse;
-import com.azure.core.http.rest.PagedResponseBase;
import com.azure.core.http.rest.Response;
import com.azure.core.http.rest.SimpleResponse;
import com.azure.core.util.Context;
@@ -42,6 +41,7 @@
import com.azure.data.tables.implementation.models.TransactionalBatchResponse;
import com.azure.data.tables.implementation.models.TransactionalBatchSubRequest;
import com.azure.data.tables.models.ListEntitiesOptions;
+import com.azure.data.tables.models.TableAccessPolicies;
import com.azure.data.tables.models.TableAccessPolicy;
import com.azure.data.tables.models.TableEntity;
import com.azure.data.tables.models.TableEntityUpdateMode;
@@ -57,17 +57,15 @@
import reactor.core.publisher.Mono;
import java.net.URI;
+import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
-import java.util.function.Function;
import java.util.stream.Collectors;
import static com.azure.core.util.CoreUtils.isNullOrEmpty;
-import static com.azure.core.util.FluxUtil.fluxContext;
import static com.azure.core.util.FluxUtil.monoError;
-import static com.azure.core.util.FluxUtil.pagedFluxError;
import static com.azure.core.util.FluxUtil.withContext;
import static com.azure.data.tables.implementation.TableUtils.swallowExceptionForStatusCode;
import static com.azure.data.tables.implementation.TableUtils.toTableServiceError;
@@ -845,45 +843,55 @@ Mono> getEntityWithResponse(String partition
* Retrieves details about any stored access policies specified on the table that may be used with Shared Access
* Signatures.
*
- * @return A paged reactive result containing the HTTP response and the table's
- * {@link TableSignedIdentifier access policies}.
+ * @return A reactive result containing the table's {@link TableAccessPolicies access policies}.
*/
- @ServiceMethod(returns = ReturnType.COLLECTION)
- public PagedFlux listAccessPolicies() {
- return (PagedFlux) fluxContext(this::listAccessPolicies);
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public Mono getAccessPolicies() {
+ return withContext(context -> getAccessPoliciesWithResponse(context)
+ .flatMap(response -> Mono.justOrEmpty(response.getValue())));
+ }
+
+ /**
+ * Retrieves details about any stored access policies specified on the table that may be used with Shared Access
+ * Signatures.
+ *
+ * @return A reactive result containing an HTTP response that contains the table's
+ * {@link TableAccessPolicies access policies}.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public Mono> getAccessPoliciesWithResponse() {
+ return withContext(this::getAccessPoliciesWithResponse);
}
- PagedFlux listAccessPolicies(Context context) {
+ Mono> getAccessPoliciesWithResponse(Context context) {
context = context == null ? Context.NONE : context;
try {
- Context finalContext = context;
- Function>> retriever =
- marker ->
- tablesImplementation.getTables()
- .getAccessPolicyWithResponseAsync(tableName, null, null, finalContext)
- .map(response -> new PagedResponseBase<>(response.getRequest(),
- response.getStatusCode(),
- response.getHeaders(),
- response.getValue().stream()
- .map(this::toTableSignedIdentifier)
- .collect(Collectors.toList()),
- null,
- response.getDeserializedHeaders()));
-
- return new PagedFlux<>(() -> retriever.apply(null), retriever);
+ return tablesImplementation.getTables()
+ .getAccessPolicyWithResponseAsync(tableName, null, null, context)
+ .map(response -> new SimpleResponse<>(response,
+ new TableAccessPolicies(response.getValue() == null ? null : response.getValue().stream()
+ .map(this::toTableSignedIdentifier)
+ .collect(Collectors.toList()))));
} catch (RuntimeException e) {
- return pagedFluxError(logger, e);
+ return monoError(logger, e);
}
}
private TableSignedIdentifier toTableSignedIdentifier(SignedIdentifier signedIdentifier) {
- return new TableSignedIdentifier()
- .setId(signedIdentifier.getId())
+ if (signedIdentifier == null) {
+ return null;
+ }
+
+ return new TableSignedIdentifier(signedIdentifier.getId())
.setAccessPolicy(toTableAccessPolicy(signedIdentifier.getAccessPolicy()));
}
private TableAccessPolicy toTableAccessPolicy(AccessPolicy accessPolicy) {
+ if (accessPolicy == null) {
+ return null;
+ }
+
return new TableAccessPolicy()
.setExpiresOn(accessPolicy.getExpiry())
.setStartsOn(accessPolicy.getStart())
@@ -918,11 +926,45 @@ public Mono> setAccessPoliciesWithResponse(List> setAccessPoliciesWithResponse(List tableSignedIdentifiers,
Context context) {
context = context == null ? Context.NONE : context;
+ List signedIdentifiers = null;
+
+ /*
+ We truncate to seconds because the service only supports nanoseconds or seconds, but doing an
+ OffsetDateTime.now will only give back milliseconds (more precise fields are zeroed and not serialized). This
+ allows for proper serialization with no real detriment to users as sub-second precision on active time for
+ signed identifiers is not really necessary.
+ */
+ if (tableSignedIdentifiers != null) {
+ signedIdentifiers = tableSignedIdentifiers.stream()
+ .map(tableSignedIdentifier -> {
+ SignedIdentifier signedIdentifier = toSignedIdentifier(tableSignedIdentifier);
+
+ if (signedIdentifier != null) {
+ if (signedIdentifier.getAccessPolicy() != null
+ && signedIdentifier.getAccessPolicy().getStart() != null) {
+
+ signedIdentifier.getAccessPolicy()
+ .setStart(signedIdentifier.getAccessPolicy()
+ .getStart().truncatedTo(ChronoUnit.SECONDS));
+ }
+
+ if (signedIdentifier.getAccessPolicy() != null
+ && signedIdentifier.getAccessPolicy().getExpiry() != null) {
+
+ signedIdentifier.getAccessPolicy()
+ .setExpiry(signedIdentifier.getAccessPolicy()
+ .getExpiry().truncatedTo(ChronoUnit.SECONDS));
+ }
+ }
+
+ return signedIdentifier;
+ })
+ .collect(Collectors.toList());
+ }
try {
return tablesImplementation.getTables()
- .setAccessPolicyWithResponseAsync(tableName, null, null,
- tableSignedIdentifiers.stream().map(this::toSignedIdentifier).collect(Collectors.toList()), context)
+ .setAccessPolicyWithResponseAsync(tableName, null, null, signedIdentifiers, context)
.map(response -> new SimpleResponse<>(response, response.getValue()));
} catch (RuntimeException e) {
return monoError(logger, e);
@@ -930,12 +972,20 @@ Mono> setAccessPoliciesWithResponse(List t
}
private SignedIdentifier toSignedIdentifier(TableSignedIdentifier tableSignedIdentifier) {
+ if (tableSignedIdentifier == null) {
+ return null;
+ }
+
return new SignedIdentifier()
.setId(tableSignedIdentifier.getId())
.setAccessPolicy(toAccessPolicy(tableSignedIdentifier.getAccessPolicy()));
}
private AccessPolicy toAccessPolicy(TableAccessPolicy tableAccessPolicy) {
+ if (tableAccessPolicy == null) {
+ return null;
+ }
+
return new AccessPolicy()
.setExpiry(tableAccessPolicy.getExpiresOn())
.setStart(tableAccessPolicy.getStartsOn())
diff --git a/sdk/tables/azure-data-tables/src/main/java/com/azure/data/tables/TableClient.java b/sdk/tables/azure-data-tables/src/main/java/com/azure/data/tables/TableClient.java
index ecd189746b233..631d82ecd655c 100644
--- a/sdk/tables/azure-data-tables/src/main/java/com/azure/data/tables/TableClient.java
+++ b/sdk/tables/azure-data-tables/src/main/java/com/azure/data/tables/TableClient.java
@@ -10,6 +10,7 @@
import com.azure.core.http.rest.Response;
import com.azure.core.util.Context;
import com.azure.data.tables.models.ListEntitiesOptions;
+import com.azure.data.tables.models.TableAccessPolicies;
import com.azure.data.tables.models.TableEntity;
import com.azure.data.tables.models.TableEntityUpdateMode;
import com.azure.data.tables.models.TableItem;
@@ -411,12 +412,11 @@ public Response getEntityWithResponse(String partitionKey, String r
* Retrieves details about any stored access policies specified on the table that may be used with Shared Access
* Signatures.
*
- * @return A reactive result containing the HTTP response and the table's
- * {@link TableSignedIdentifier access policies}.
+ * @return The table's {@link TableAccessPolicies access policies}.
*/
- @ServiceMethod(returns = ReturnType.COLLECTION)
- public PagedIterable listAccessPolicies() {
- return new PagedIterable<>(client.listAccessPolicies());
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public TableAccessPolicies getAccessPolicies() {
+ return client.getAccessPolicies().block();
}
/**
@@ -426,12 +426,11 @@ public PagedIterable listAccessPolicies() {
* @param timeout An optional timeout value beyond which a {@link RuntimeException} will be raised.
* @param context Additional context that is passed through the HTTP pipeline during the service call.
*
- * @return A reactive result containing the HTTP response and the table's
- * {@link TableSignedIdentifier access policies}.
+ * @return An HTTP response containing the table's {@link TableAccessPolicies access policies}.
*/
- @ServiceMethod(returns = ReturnType.COLLECTION)
- public PagedIterable listAccessPolicies(Duration timeout, Context context) {
- return new PagedIterable<>(applyOptionalTimeout(client.listAccessPolicies(context), timeout));
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public Response getAccessPoliciesWithResponse(Duration timeout, Context context) {
+ return blockWithOptionalTimeout(client.getAccessPoliciesWithResponse(context), timeout);
}
/**
diff --git a/sdk/tables/azure-data-tables/src/main/java/com/azure/data/tables/TableServiceAsyncClient.java b/sdk/tables/azure-data-tables/src/main/java/com/azure/data/tables/TableServiceAsyncClient.java
index 180a167db98aa..7e5975d09df13 100644
--- a/sdk/tables/azure-data-tables/src/main/java/com/azure/data/tables/TableServiceAsyncClient.java
+++ b/sdk/tables/azure-data-tables/src/main/java/com/azure/data/tables/TableServiceAsyncClient.java
@@ -555,7 +555,6 @@ public Mono setProperties(TableServiceProperties tableServiceProperties) {
return this.setPropertiesWithResponse(tableServiceProperties).flatMap(FluxUtil::toMono);
}
-
/**
* Sets the properties of an account's Table service, including properties for Analytics and CORS (Cross-Origin
* Resource Sharing) rules.
diff --git a/sdk/tables/azure-data-tables/src/main/java/com/azure/data/tables/implementation/TablesImpl.java b/sdk/tables/azure-data-tables/src/main/java/com/azure/data/tables/implementation/TablesImpl.java
index 6275166a1a82e..2abaf1209b7a6 100644
--- a/sdk/tables/azure-data-tables/src/main/java/com/azure/data/tables/implementation/TablesImpl.java
+++ b/sdk/tables/azure-data-tables/src/main/java/com/azure/data/tables/implementation/TablesImpl.java
@@ -26,6 +26,7 @@
import com.azure.data.tables.implementation.models.QueryOptions;
import com.azure.data.tables.implementation.models.ResponseFormat;
import com.azure.data.tables.implementation.models.SignedIdentifier;
+import com.azure.data.tables.implementation.models.SignedIdentifiersWrapper;
import com.azure.data.tables.implementation.models.TableProperties;
import com.azure.data.tables.implementation.models.TableServiceErrorException;
import com.azure.data.tables.implementation.models.TablesCreateResponse;
@@ -238,7 +239,7 @@ Mono setAccessPolicy(
@HeaderParam("x-ms-client-request-id") String requestId,
@PathParam("table") String table,
@QueryParam("comp") String comp,
- @BodyParam("application/xml") List tableAcl,
+ @BodyParam("application/xml") SignedIdentifiersWrapper tableAcl,
@HeaderParam("Accept") String accept,
Context context);
}
@@ -725,6 +726,9 @@ public Mono setAccessPolicyWithResponseAsync(
String table, Integer timeout, String requestId, List tableAcl, Context context) {
final String comp = "acl";
final String accept = "application/xml";
+
+ SignedIdentifiersWrapper tableAclConverted = new SignedIdentifiersWrapper(tableAcl);
+
return service.setAccessPolicy(
this.client.getUrl(),
timeout,
@@ -732,7 +736,7 @@ public Mono setAccessPolicyWithResponseAsync(
requestId,
table,
comp,
- tableAcl,
+ tableAclConverted,
accept,
context);
}
diff --git a/sdk/tables/azure-data-tables/src/main/java/com/azure/data/tables/implementation/models/SignedIdentifiersWrapper.java b/sdk/tables/azure-data-tables/src/main/java/com/azure/data/tables/implementation/models/SignedIdentifiersWrapper.java
new file mode 100644
index 0000000000000..dacd23ed397ab
--- /dev/null
+++ b/sdk/tables/azure-data-tables/src/main/java/com/azure/data/tables/implementation/models/SignedIdentifiersWrapper.java
@@ -0,0 +1,36 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+package com.azure.data.tables.implementation.models;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
+
+import java.util.List;
+
+/** A wrapper around List<SignedIdentifier> which provides top-level metadata for serialization. */
+@JacksonXmlRootElement(localName = "SignedIdentifiers")
+public final class SignedIdentifiersWrapper {
+ @JacksonXmlProperty(localName = "SignedIdentifier")
+ private final List signedIdentifiers;
+
+ /**
+ * Creates an instance of SignedIdentifiersWrapper.
+ *
+ * @param signedIdentifiers the list.
+ */
+ @JsonCreator
+ public SignedIdentifiersWrapper(@JsonProperty("SignedIdentifier") List signedIdentifiers) {
+ this.signedIdentifiers = signedIdentifiers;
+ }
+
+ /**
+ * Get the List<BlobSignedIdentifier> contained in this wrapper.
+ *
+ * @return the List<BlobSignedIdentifier>.
+ */
+ public List items() {
+ return signedIdentifiers;
+ }
+}
diff --git a/sdk/tables/azure-data-tables/src/main/java/com/azure/data/tables/models/TableAccessPolicies.java b/sdk/tables/azure-data-tables/src/main/java/com/azure/data/tables/models/TableAccessPolicies.java
new file mode 100644
index 0000000000000..0e96efcb441f0
--- /dev/null
+++ b/sdk/tables/azure-data-tables/src/main/java/com/azure/data/tables/models/TableAccessPolicies.java
@@ -0,0 +1,31 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+package com.azure.data.tables.models;
+
+import com.azure.core.annotation.Immutable;
+
+import java.util.List;
+
+/**
+ * This class contains values which correlate to the access polices set for a specific table.
+ */
+@Immutable
+public final class TableAccessPolicies {
+ private final List identifiers;
+
+ /**
+ * Constructs a {@link TableAccessPolicies}.
+ *
+ * @param identifiers {@link TableSignedIdentifier TableSignedIdentifiers} associated with the table.
+ */
+ public TableAccessPolicies(List identifiers) {
+ this.identifiers = identifiers;
+ }
+
+ /**
+ * @return the {@link TableSignedIdentifier TableSignedIdentifiers} associated with the table.
+ */
+ public List getIdentifiers() {
+ return this.identifiers;
+ }
+}
diff --git a/sdk/tables/azure-data-tables/src/main/java/com/azure/data/tables/models/TableSignedIdentifier.java b/sdk/tables/azure-data-tables/src/main/java/com/azure/data/tables/models/TableSignedIdentifier.java
index 7f3d377f4b510..d758c9e5c2752 100644
--- a/sdk/tables/azure-data-tables/src/main/java/com/azure/data/tables/models/TableSignedIdentifier.java
+++ b/sdk/tables/azure-data-tables/src/main/java/com/azure/data/tables/models/TableSignedIdentifier.java
@@ -5,6 +5,8 @@
import com.azure.core.annotation.Fluent;
+import java.util.Objects;
+
/**
* A signed identifier.
*/
@@ -13,7 +15,7 @@ public final class TableSignedIdentifier {
/*
* A unique id
*/
- private String id;
+ private final String id;
/*
* An access policy.
@@ -21,25 +23,23 @@ public final class TableSignedIdentifier {
private TableAccessPolicy accessPolicy;
/**
- * Get the unique id.
+ * Create a {@link TableSignedIdentifier}.
*
- * @return The id.
+ * @param id A unique id for this {@link TableSignedIdentifier}.
*/
- public String getId() {
- return this.id;
+ public TableSignedIdentifier(String id) {
+ Objects.requireNonNull(id, "'id' cannot be null");
+
+ this.id = id;
}
/**
- * Set a unique id.
- *
- * @param id The id to set.
+ * Get the unique id.
*
- * @return The updated {@link TableSignedIdentifier} object.
+ * @return The id.
*/
- public TableSignedIdentifier setId(String id) {
- this.id = id;
-
- return this;
+ public String getId() {
+ return this.id;
}
/**
diff --git a/sdk/tables/azure-data-tables/src/test/java/com/azure/data/tables/TableAsyncClientTest.java b/sdk/tables/azure-data-tables/src/test/java/com/azure/data/tables/TableAsyncClientTest.java
index aea0ed4f55023..c4b349f462fcc 100644
--- a/sdk/tables/azure-data-tables/src/test/java/com/azure/data/tables/TableAsyncClientTest.java
+++ b/sdk/tables/azure-data-tables/src/test/java/com/azure/data/tables/TableAsyncClientTest.java
@@ -13,8 +13,10 @@
import com.azure.core.test.TestBase;
import com.azure.core.test.utils.TestResourceNamer;
import com.azure.data.tables.models.ListEntitiesOptions;
+import com.azure.data.tables.models.TableAccessPolicy;
import com.azure.data.tables.models.TableEntity;
import com.azure.data.tables.models.TableEntityUpdateMode;
+import com.azure.data.tables.models.TableSignedIdentifier;
import com.azure.data.tables.models.TableTransactionAction;
import com.azure.data.tables.models.TableTransactionActionResponse;
import com.azure.data.tables.models.TableTransactionActionType;
@@ -35,6 +37,7 @@
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -1009,4 +1012,86 @@ public void canUseSasTokenToCreateValidTableClient() {
.expectComplete()
.verify();
}
+
+ @Test
+ public void setAndListAccessPolicies() {
+ OffsetDateTime startTime = OffsetDateTime.of(2021, 12, 12, 0, 0, 0, 0, ZoneOffset.UTC);
+ OffsetDateTime expiryTime = OffsetDateTime.of(2022, 12, 12, 0, 0, 0, 0, ZoneOffset.UTC);
+ String permissions = "r";
+ TableAccessPolicy tableAccessPolicy = new TableAccessPolicy()
+ .setStartsOn(startTime)
+ .setExpiresOn(expiryTime)
+ .setPermissions(permissions);
+ String id = "testPolicy";
+ TableSignedIdentifier tableSignedIdentifier = new TableSignedIdentifier(id).setAccessPolicy(tableAccessPolicy);
+
+ StepVerifier.create(tableClient.setAccessPoliciesWithResponse(Collections.singletonList(tableSignedIdentifier)))
+ .assertNext(response -> assertEquals(204, response.getStatusCode()))
+ .expectComplete()
+ .verify();
+
+ StepVerifier.create(tableClient.getAccessPolicies())
+ .assertNext(tableAccessPolicies -> {
+ assertNotNull(tableAccessPolicies);
+ assertNotNull(tableAccessPolicies.getIdentifiers());
+
+ TableSignedIdentifier signedIdentifier = tableAccessPolicies.getIdentifiers().get(0);
+
+ assertNotNull(signedIdentifier);
+
+ TableAccessPolicy accessPolicy = signedIdentifier.getAccessPolicy();
+
+ assertNotNull(accessPolicy);
+ assertEquals(startTime, accessPolicy.getStartsOn());
+ assertEquals(expiryTime, accessPolicy.getExpiresOn());
+ assertEquals(permissions, accessPolicy.getPermissions());
+ assertEquals(id, signedIdentifier.getId());
+ })
+ .expectComplete()
+ .verify();
+ }
+
+ @Test
+ public void setAndListMultipleAccessPolicies() {
+ OffsetDateTime startTime = OffsetDateTime.of(2021, 12, 12, 0, 0, 0, 0, ZoneOffset.UTC);
+ OffsetDateTime expiryTime = OffsetDateTime.of(2022, 12, 12, 0, 0, 0, 0, ZoneOffset.UTC);
+ String permissions = "r";
+ TableAccessPolicy tableAccessPolicy = new TableAccessPolicy()
+ .setStartsOn(startTime)
+ .setExpiresOn(expiryTime)
+ .setPermissions(permissions);
+ String id1 = "testPolicy1";
+ String id2 = "testPolicy2";
+ List tableSignedIdentifiers = new ArrayList<>();
+ tableSignedIdentifiers.add(new TableSignedIdentifier(id1).setAccessPolicy(tableAccessPolicy));
+ tableSignedIdentifiers.add(new TableSignedIdentifier(id2).setAccessPolicy(tableAccessPolicy));
+
+ StepVerifier.create(tableClient.setAccessPoliciesWithResponse(tableSignedIdentifiers))
+ .assertNext(response -> assertEquals(204, response.getStatusCode()))
+ .expectComplete()
+ .verify();
+
+ StepVerifier.create(tableClient.getAccessPolicies())
+ .assertNext(tableAccessPolicies -> {
+ assertNotNull(tableAccessPolicies);
+ assertNotNull(tableAccessPolicies.getIdentifiers());
+
+ assertEquals(2, tableAccessPolicies.getIdentifiers().size());
+ assertEquals(id1, tableAccessPolicies.getIdentifiers().get(0).getId());
+ assertEquals(id2, tableAccessPolicies.getIdentifiers().get(1).getId());
+
+ for (TableSignedIdentifier signedIdentifier : tableAccessPolicies.getIdentifiers()) {
+ assertNotNull(signedIdentifier);
+
+ TableAccessPolicy accessPolicy = signedIdentifier.getAccessPolicy();
+
+ assertNotNull(accessPolicy);
+ assertEquals(startTime, accessPolicy.getStartsOn());
+ assertEquals(expiryTime, accessPolicy.getExpiresOn());
+ assertEquals(permissions, accessPolicy.getPermissions());
+ }
+ })
+ .expectComplete()
+ .verify();
+ }
}
diff --git a/sdk/tables/azure-data-tables/src/test/java/com/azure/data/tables/TableServiceAsyncClientTest.java b/sdk/tables/azure-data-tables/src/test/java/com/azure/data/tables/TableServiceAsyncClientTest.java
index b94b25f1f855a..c3268f80ae8dd 100644
--- a/sdk/tables/azure-data-tables/src/test/java/com/azure/data/tables/TableServiceAsyncClientTest.java
+++ b/sdk/tables/azure-data-tables/src/test/java/com/azure/data/tables/TableServiceAsyncClientTest.java
@@ -13,6 +13,8 @@
import com.azure.data.tables.models.ListTablesOptions;
import com.azure.data.tables.models.TableEntity;
import com.azure.data.tables.models.TableServiceException;
+import com.azure.data.tables.models.TableServiceProperties;
+import com.azure.data.tables.models.TableServiceStatistics;
import com.azure.data.tables.sas.TableAccountSasPermission;
import com.azure.data.tables.sas.TableAccountSasResourceType;
import com.azure.data.tables.sas.TableAccountSasService;
@@ -415,4 +417,27 @@ public void canUseSasTokenToCreateValidTableClient() {
.expectComplete()
.verify();
}
+
+ @Test
+ public void getProperties() {
+ TableServiceProperties properties = serviceClient.getProperties().block();
+
+ assertNotNull(properties);
+ assertNotNull(properties.getCorsRules());
+ assertEquals(1, properties.getCorsRules().size());
+ assertNotNull(properties.getCorsRules().get(0));
+ assertNotNull(properties.getHourMetrics());
+ assertNotNull(properties.getMinuteMetrics());
+ assertNotNull(properties.getLogging());
+ }
+
+ @Test
+ public void getStatistics() {
+ TableServiceStatistics statistics = serviceClient.getStatistics().block();
+
+ assertNotNull(statistics);
+ assertNotNull(statistics.getGeoReplication());
+ assertNotNull(statistics.getGeoReplication().getStatus());
+ assertNotNull(statistics.getGeoReplication().getLastSyncTime());
+ }
}
diff --git a/sdk/tables/azure-data-tables/src/test/resources/session-records/TableAsyncClientTest.setAndListAccessPolicies.json b/sdk/tables/azure-data-tables/src/test/resources/session-records/TableAsyncClientTest.setAndListAccessPolicies.json
new file mode 100644
index 0000000000000..c2b487fbe7fac
--- /dev/null
+++ b/sdk/tables/azure-data-tables/src/test/resources/session-records/TableAsyncClientTest.setAndListAccessPolicies.json
@@ -0,0 +1,70 @@
+{
+ "networkCallRecords" : [ {
+ "Method" : "POST",
+ "Uri" : "https://REDACTED.table.core.windows.net/Tables",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-data-tables/12.0.0-beta.8 (11.0.6; Windows 10; 10.0)",
+ "x-ms-client-request-id" : "dcafda0f-be10-4d42-adb4-2cd6e8f1b4a2",
+ "Content-Type" : "application/json;odata=nometadata"
+ },
+ "Response" : {
+ "content-length" : "0",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0",
+ "X-Content-Type-Options" : "nosniff",
+ "retry-after" : "0",
+ "StatusCode" : "204",
+ "Date" : "Tue, 08 Jun 2021 22:37:47 GMT",
+ "Cache-Control" : "no-cache",
+ "DataServiceId" : "https://tablesstoragetests.table.core.windows.net/Tables('tablename62751f1d')",
+ "x-ms-request-id" : "2639e140-e002-0076-32b6-5c5add000000",
+ "x-ms-client-request-id" : "dcafda0f-be10-4d42-adb4-2cd6e8f1b4a2",
+ "Preference-Applied" : "return-no-content",
+ "Location" : "https://tablesstoragetests.table.core.windows.net/Tables('tablename62751f1d')"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://REDACTED.table.core.windows.net/tablename62751f1d?comp=acl",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-data-tables/12.0.0-beta.8 (11.0.6; Windows 10; 10.0)",
+ "x-ms-client-request-id" : "b1274fd8-e63e-46de-99ac-6813272ecc3a",
+ "Content-Type" : "application/xml"
+ },
+ "Response" : {
+ "content-length" : "0",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "204",
+ "x-ms-request-id" : "2639e17c-e002-0076-65b6-5c5add000000",
+ "x-ms-client-request-id" : "b1274fd8-e63e-46de-99ac-6813272ecc3a",
+ "Date" : "Tue, 08 Jun 2021 22:37:48 GMT"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "GET",
+ "Uri" : "https://REDACTED.table.core.windows.net/tablename62751f1d?comp=acl",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-data-tables/12.0.0-beta.8 (11.0.6; Windows 10; 10.0)",
+ "x-ms-client-request-id" : "4ff7b815-5be5-494a-901d-4ada60a8d895"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "2639e1af-e002-0076-16b6-5c5add000000",
+ "Body" : "testPolicy2021-12-12T00:00:00.0000000Z2022-12-12T00:00:00.0000000Zr",
+ "x-ms-client-request-id" : "4ff7b815-5be5-494a-901d-4ada60a8d895",
+ "Date" : "Tue, 08 Jun 2021 22:37:48 GMT",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ } ],
+ "variables" : [ "tablename62751f1d" ]
+}
\ No newline at end of file
diff --git a/sdk/tables/azure-data-tables/src/test/resources/session-records/TableAsyncClientTest.setAndListMultipleAccessPolicies.json b/sdk/tables/azure-data-tables/src/test/resources/session-records/TableAsyncClientTest.setAndListMultipleAccessPolicies.json
new file mode 100644
index 0000000000000..13a3f632f2413
--- /dev/null
+++ b/sdk/tables/azure-data-tables/src/test/resources/session-records/TableAsyncClientTest.setAndListMultipleAccessPolicies.json
@@ -0,0 +1,70 @@
+{
+ "networkCallRecords" : [ {
+ "Method" : "POST",
+ "Uri" : "https://REDACTED.table.core.windows.net/Tables",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-data-tables/12.0.0-beta.8 (11.0.6; Windows 10; 10.0)",
+ "x-ms-client-request-id" : "e525883a-185b-4f86-a587-0ee72dd66428",
+ "Content-Type" : "application/json;odata=nometadata"
+ },
+ "Response" : {
+ "content-length" : "0",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0",
+ "X-Content-Type-Options" : "nosniff",
+ "retry-after" : "0",
+ "StatusCode" : "204",
+ "Date" : "Wed, 09 Jun 2021 16:41:46 GMT",
+ "Cache-Control" : "no-cache",
+ "DataServiceId" : "https://tablesstoragetests.table.core.windows.net/Tables('tablename75432233')",
+ "x-ms-request-id" : "9a29f259-6002-0045-024e-5d03f0000000",
+ "x-ms-client-request-id" : "e525883a-185b-4f86-a587-0ee72dd66428",
+ "Preference-Applied" : "return-no-content",
+ "Location" : "https://tablesstoragetests.table.core.windows.net/Tables('tablename75432233')"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://REDACTED.table.core.windows.net/tablename75432233?comp=acl",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-data-tables/12.0.0-beta.8 (11.0.6; Windows 10; 10.0)",
+ "x-ms-client-request-id" : "84daf1aa-c1db-4fa9-896c-7a73baaec8ef",
+ "Content-Type" : "application/xml"
+ },
+ "Response" : {
+ "content-length" : "0",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "204",
+ "x-ms-request-id" : "9a29f27c-6002-0045-224e-5d03f0000000",
+ "x-ms-client-request-id" : "84daf1aa-c1db-4fa9-896c-7a73baaec8ef",
+ "Date" : "Wed, 09 Jun 2021 16:41:46 GMT"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "GET",
+ "Uri" : "https://REDACTED.table.core.windows.net/tablename75432233?comp=acl",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-data-tables/12.0.0-beta.8 (11.0.6; Windows 10; 10.0)",
+ "x-ms-client-request-id" : "8a9badde-cb39-4d9c-9cac-4eab21923603"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "9a29f2a4-6002-0045-464e-5d03f0000000",
+ "Body" : "testPolicy12021-12-12T00:00:00.0000000Z2022-12-12T00:00:00.0000000ZrtestPolicy22021-12-12T00:00:00.0000000Z2022-12-12T00:00:00.0000000Zr",
+ "x-ms-client-request-id" : "8a9badde-cb39-4d9c-9cac-4eab21923603",
+ "Date" : "Wed, 09 Jun 2021 16:41:46 GMT",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ } ],
+ "variables" : [ "tablename75432233" ]
+}
\ No newline at end of file
diff --git a/sdk/tables/azure-data-tables/src/test/resources/session-records/TableServiceAsyncClientTest.getProperties.json b/sdk/tables/azure-data-tables/src/test/resources/session-records/TableServiceAsyncClientTest.getProperties.json
new file mode 100644
index 0000000000000..f7c85c8435537
--- /dev/null
+++ b/sdk/tables/azure-data-tables/src/test/resources/session-records/TableServiceAsyncClientTest.getProperties.json
@@ -0,0 +1,25 @@
+{
+ "networkCallRecords" : [ {
+ "Method" : "GET",
+ "Uri" : "https://REDACTED.table.core.windows.net?restype=service&comp=properties",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-data-tables/12.0.0-beta.8 (11.0.6; Windows 10; 10.0)",
+ "x-ms-client-request-id" : "ab32db33-e94b-4739-99c9-8a8362ccdf5d"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "fadb7285-5002-006f-12da-5c76b5000000",
+ "Body" : "1.0falsefalsefalsefalse1.0truetruetrue71.0falsefalse",
+ "x-ms-client-request-id" : "ab32db33-e94b-4739-99c9-8a8362ccdf5d",
+ "Date" : "Wed, 09 Jun 2021 02:52:51 GMT",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ } ],
+ "variables" : [ ]
+}
\ No newline at end of file
diff --git a/sdk/tables/azure-data-tables/src/test/resources/session-records/TableServiceAsyncClientTest.getStatistics.json b/sdk/tables/azure-data-tables/src/test/resources/session-records/TableServiceAsyncClientTest.getStatistics.json
new file mode 100644
index 0000000000000..f68b4668e9cc1
--- /dev/null
+++ b/sdk/tables/azure-data-tables/src/test/resources/session-records/TableServiceAsyncClientTest.getStatistics.json
@@ -0,0 +1,25 @@
+{
+ "networkCallRecords" : [ {
+ "Method" : "GET",
+ "Uri" : "https://REDACTED.table.core.windows.net?restype=service&comp=stats",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-data-tables/12.0.0-beta.8 (11.0.6; Windows 10; 10.0)",
+ "x-ms-client-request-id" : "6217e123-d132-449a-a2af-3769aa73707e"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "f9737ddc-6002-006c-2ad9-5c75b2000000",
+ "Body" : "liveTue, 04 May 2021 23:33:28 GMT",
+ "x-ms-client-request-id" : "6217e123-d132-449a-a2af-3769aa73707e",
+ "Date" : "Wed, 09 Jun 2021 02:45:34 GMT",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ } ],
+ "variables" : [ ]
+}
diff --git a/sdk/tables/azure-data-tables/swagger/README.md b/sdk/tables/azure-data-tables/swagger/README.md
index ca3855ff48876..8a5b17647479d 100644
--- a/sdk/tables/azure-data-tables/swagger/README.md
+++ b/sdk/tables/azure-data-tables/swagger/README.md
@@ -19,7 +19,7 @@ autorest --java --use=C:/work/autorest.java
```
### Code generation settings
-``` yaml
+```yaml
input-file: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/master/specification/cosmos-db/data-plane/Microsoft.Tables/preview/2019-02-02/table.json
java: true
output-folder: ..\
diff --git a/sdk/textanalytics/azure-ai-textanalytics/pom.xml b/sdk/textanalytics/azure-ai-textanalytics/pom.xml
index 9c37fa5179edb..219c605a1b80b 100644
--- a/sdk/textanalytics/azure-ai-textanalytics/pom.xml
+++ b/sdk/textanalytics/azure-ai-textanalytics/pom.xml
@@ -88,7 +88,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/translation/azure-ai-documenttranslator/pom.xml b/sdk/translation/azure-ai-documenttranslator/pom.xml
index 6b82ac521e483..f6e4bbce2894f 100644
--- a/sdk/translation/azure-ai-documenttranslator/pom.xml
+++ b/sdk/translation/azure-ai-documenttranslator/pom.xml
@@ -79,7 +79,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test
diff --git a/sdk/webpubsub/azure-messaging-webpubsub/pom.xml b/sdk/webpubsub/azure-messaging-webpubsub/pom.xml
index 4d2e66f402e8a..cf7f4f44ecd75 100644
--- a/sdk/webpubsub/azure-messaging-webpubsub/pom.xml
+++ b/sdk/webpubsub/azure-messaging-webpubsub/pom.xml
@@ -95,7 +95,7 @@
com.azure
azure-identity
- 1.3.0
+ 1.3.1
test