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 ec959b903ac0..7e9bde9251ae 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 000000000000..89097b67a56b
--- /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 65addbcff293..7f252286d5a3 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 cf70a30f1385..17c136924eb3 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 6122844b676e..8412286b92fd 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 4ce784402a86..d01b227670c4 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 5a456eb10f65..7383b08ad0b9 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 162da6598bdf..d73c757d6eff 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 6817ac04c92a..31a844d4f3b7 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 5b2fa815ef15..bb63a8180454 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 346c64f14e62..96bf408400ab 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 9f7d098471b6..91959c984d1e 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 b83d4ec16ba5..0814f3ff0e3f 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 b9132bb32b8e..3894af7f993d 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 7df181450229..dc2ad0bde0b3 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 74d93b554a80..aa497580a92e 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 897bc0f4001a..ebdce48ff39b 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 24d4f991b6de..8399d63bd39d 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 3df4eaa7249e..292ea536ad85 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 0bdbb1c6d2f3..0cf3aaefb21a 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 b503ab04f42b..a6ea9abe0a86 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 768d8d43ab76..a326544d1099 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 281a0d9f93bf..084857bae8a2 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 1bf8d4e3311c..3a33e9af9ac8 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 4dff37e253eb..4fe4606120f0 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 593427d0c88d..771f2fe76052 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 bc622abacec7..b792581298ef 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 1818452666dc..f569e07adcea 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 2189b9ab50c6..8088b43ec769 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 df88f34b080d..0963d1e34c59 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 117c9aa0f77c..85549958f857 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 28f7d5bdd3ea..861ee37556e2 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 ce9aa0e1736c..fa0cc69d08af 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 7163a6e0fdec..65ef6ecbf979 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 92a2e1dabb4f..06630b7d6dd8 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 15d49199a1f8..62637b8f7fac 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 1e3b98d0d8ae..a64cd21fdeb8 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 b1a898ec0aea..2a2de263d8c1 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 c9a00db7767b..0f8d0406024d 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 d029c6bfaf31..be15bfb21d47 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 6a1e2a436e68..d26982874dd5 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 0d19feedec7b..c3fd45a27067 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 270ad44a8b8c..23f74953a7fc 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 700dc0deffb7..5875af42e345 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 1a623afd3a40..647c08f50df5 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 bab0bc04e5da..d01adaed1d9a 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 4ed4c22939ef..79b303fd2216 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 896284a9f193..8cb00531daff 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 8510fcceea4f..e12bcd6bef0c 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 0247fc467e32..b988cf787ae6 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 9e73147db207..94554ee724c3 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 94094f307e2d..d888e84161bf 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 ca2936b24651..7810e2a6a30b 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 81e66a50ffe1..315abd86c42d 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 8e1f3de66465..c623c699ec6d 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 0f1885f8cb67..9c5008dc04f2 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 38f4b9cb618a..1fcfca6825a9 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 858f53e190a2..f0e66e549826 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 850a2f8775ab..c9ad305d99ea 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 5345914df5a2..663e63c809eb 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 af6e2ad9ee5c..db5f5b28f254 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 5ca3b99d10c0..4eabb7557d0d 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 01d9d216f4a2..ee73e49dd88b 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 e7aeca159d2b..85c1b27d6997 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 69e9648b0a6c..dee8d5657942 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 cc63bca32eec..483377527c05 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 9f3cf38ab50a..facb32fd2a89 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 2f2b67e708de..0cc0a41f4cf8 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 113fbbf71549..fc8472412862 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 e7c8a450023f..f7b487b729c4 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 8877c8d66540..ba033dc1b025 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 bae2b83de2e9..2aa4bb827b03 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 9fad42176f92..f1ad3ac11e98 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 cee85167d70a..067426e17a97 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 6a5629798800..d5ac80737935 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 03989131417c..cda90fd71317 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 d29c07afb3a3..8754c0d38e62 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 7451661df077..2b7985ee2699 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 59624d9b8d32..6d11d33ee687 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 50db424df7b8..95941ba39097 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 4271dd1f2f93..5f6f0535cb6e 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 04e1b468e5e2..4ce9e2560327 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 d09ae490e40d..305dbcb628e4 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 bbe9230a0843..89d6d0df47b7 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 ab722e61c197..bc685fba465e 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 1390b7232162..961cd9757bfe 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 d7ac1c994f6f..58b778f91847 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 ccf577f8adcb..b7e73f7a0978 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 5151f6ac4099..94ad111461ed 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 64b07de12208..99e364bc54fc 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 2dc6d6e089eb..98d77fef234a 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 8fd05ef6f0cb..ba20bcbb9ff7 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 95385b2332cd..1a83c4a0d4ba 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 fc9390e83fb5..f028fa3cc48d 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 5060966aa5a8..bd235e0e3983 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 0fe25e194355..581c2b3d1b24 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 6ed2891ebe78..909d2a408da4 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 f317cd8bcafa..bd9229d71c30 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 8d374823aa96..80f25e20ea0b 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 337f9733a364..72481a42f605 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 969be6177b87..ecee396da61d 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 be1f3354d65e..dadb01a3d8b5 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 daa872f9810e..52680bbb033b 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 556aec57fae9..33a7320c87ea 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 003b0fe72fb4..7ca088e2e347 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 7a214819a231..31c96012cef1 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 83b3b047dc52..9155139c0335 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 fcf4653ba14a..85fe045ba65c 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 259adb3fe2c9..7f9fc6f3d80e 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 12083cefc14a..d63282bd5b65 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 930e4db000e8..bfff6f6fad66 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 899115242e8d..17b8ac6cc04e 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 2c17069090a1..b546f73dc6db 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 dca7eaf3b0ad..93ba6d074406 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 eb1494f62400..b52637670dee 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 c51c9ec88b4a..9c8a58989d4d 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 aa26f3f85828..8fa4e869dce5 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 0aa80d8b0849..8316a913792e 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 0f166b7175de..9014a5772927 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 5ae7504fdf49..873b352a11b1 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 d34b12c7ae3e..4cb7e9cd1609 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 e0bdf4410462..702038098a59 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 dfc791f03ad4..0dc0c449f5e2 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 789f7f98fdb1..4121df10ee73 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 75cc749d57f7..a31fa4944a08 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 30d24c989d1d..e8c8dc03adce 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 a3ddce1cb739..d3a3c4d9176b 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 edd9ca0cd71c..89db203b728a 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 008329538348..acea91b3ab09 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 2a6d39cb9f6e..710519507527 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 14ead628d06d..f589912090f1 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 2f7c8650ff29..d293c0daf8f5 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 f2c1908bebec..da83223bd546 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 11916e74c15a..c68d6148fb2c 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 d5db5a406eed..8587b981c62c 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 2324df83dd2b..b3f85b43a09d 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 eed81ef49223..2faac9993e50 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 e74a85caa2bb..1f359d6a34f8 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 7f8ca743a58b..b50187d95ae6 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 3aa1cafd8b55..06bed757b933 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 122c59afd91f..b07acc038270 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 9b25f6c5bb10..d06d497eddde 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 82f53febf654..5e08396ea43a 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 62e3d35c3fc5..6b71292b15ba 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 deec64ca9ecf..9fb44f1242b4 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 32f57bf8105f..00646b7d6799 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 0425867b6575..056b9c60ffeb 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 2df27a5f4df7..09b66dafcbc3 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 e9078cdcd028..adf240b6846d 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 34b3221dc8c1..7aed71ded407 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 40ad06d52156..19a4dc2a26b5 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 659001af8648..3b0f95c7a066 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 0a61a219e473..f6593ad5e06d 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 d6a65074985f..bff62297aac8 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 506857b48ae6..56d621d2dd85 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 f29e83346f8b..aaaecab1d904 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 46fd69e6c228..3e6b77952f6c 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 42fe8e8e9a23..edf925af650c 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 49db98eb61b7..13fb9185069b 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 e67d032a283d..aee2b9d60906 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 788e5d1fb9fa..7e6473337ea0 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 33d3b6539779..3bff81252beb 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 ecd189746b23..631d82ecd655 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 180a167db98a..7e5975d09df1 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 6275166a1a82..2abaf1209b7a 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 000000000000..dacd23ed397a
--- /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 000000000000..0e96efcb441f
--- /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 7f3d377f4b51..d758c9e5c275 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 aea0ed4f5502..c4b349f462fc 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 b94b25f1f855..c3268f80ae8d 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 000000000000..c2b487fbe7fa
--- /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 000000000000..13a3f632f241
--- /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 000000000000..f7c85c843553
--- /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 000000000000..f68b4668e9cc
--- /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 ca3855ff4887..8a5b17647479 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 9c37fa5179ed..219c605a1b80 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 6b82ac521e48..f6e4bbce2894 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 4d2e66f402e8..cf7f4f44ecd7 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