createContainerIfNotExists(String id, String partitionKeyPath) {
CosmosAsyncContainer container = getContainer(id);
- if (!client.getTracerProvider().isEnabled()) {
- return createContainerIfNotExistsInternal(container.read(), new CosmosContainerProperties(id,
- partitionKeyPath), null, null);
- }
-
- return withContext(context -> createContainerIfNotExistsInternal(new CosmosContainerProperties(id,
- partitionKeyPath), container, null,
- context));
+ return createContainerIfNotExistsInternal(new CosmosContainerProperties(id, partitionKeyPath),
+ container,
+ null);
}
/**
* Creates a Cosmos container if it does not exist on the service.
*
- * The throughput properties will only be used if the specified container
- * does not exist and therefor a new container will be created.
+ * The throughput setting will only be used if the specified container
+ * does not exist and a new container will be created.
*
* After subscription the operation will be performed. The {@link Mono} upon
* successful completion will contain a cosmos container response with the
@@ -396,29 +362,25 @@ public Mono createContainerIfNotExists(String id, Strin
*
* @param id the cosmos container id.
* @param partitionKeyPath the partition key path.
- * @param throughputProperties the throughput properties for the container.
+ * @param throughput the throughput for the container.
* @return a {@link Mono} containing the cosmos container response with the
* created container or an error.
*/
- public Mono createContainerIfNotExists(
+ Mono createContainerIfNotExists(
String id, String partitionKeyPath,
- ThroughputProperties throughputProperties) {
+ int throughput) {
CosmosContainerRequestOptions options = new CosmosContainerRequestOptions();
- ModelBridgeInternal.setThroughputProperties(options, throughputProperties);
+ ModelBridgeInternal.setThroughputProperties(options, ThroughputProperties.createManualThroughput(throughput));
CosmosAsyncContainer container = getContainer(id);
- if (!client.getTracerProvider().isEnabled()) {
- return createContainerIfNotExistsInternal(container.read(), new CosmosContainerProperties(id, partitionKeyPath), options, null);
- }
-
- return withContext(context -> createContainerIfNotExistsInternal(new CosmosContainerProperties(id,
- partitionKeyPath), container, options, context));
+ return createContainerIfNotExistsInternal(new CosmosContainerProperties(id, partitionKeyPath), container,
+ options);
}
/**
* Creates a Cosmos container if it does not exist on the service.
*
- * The throughput setting will only be used if the specified container
- * does not exist and a new container will be created.
+ * The throughput properties will only be used if the specified container
+ * does not exist and therefor a new container will be created.
*
* After subscription the operation will be performed. The {@link Mono} upon
* successful completion will contain a cosmos container response with the
@@ -426,24 +388,33 @@ public Mono createContainerIfNotExists(
*
* @param id the cosmos container id.
* @param partitionKeyPath the partition key path.
- * @param throughput the throughput for the container.
+ * @param throughputProperties the throughput properties for the container.
* @return a {@link Mono} containing the cosmos container response with the
* created container or an error.
*/
- Mono createContainerIfNotExists(
+ public Mono createContainerIfNotExists(
String id, String partitionKeyPath,
- int throughput) {
+ ThroughputProperties throughputProperties) {
CosmosContainerRequestOptions options = new CosmosContainerRequestOptions();
- ModelBridgeInternal.setThroughputProperties(options, ThroughputProperties.createManualThroughput(throughput));
+ ModelBridgeInternal.setThroughputProperties(options, throughputProperties);
CosmosAsyncContainer container = getContainer(id);
- if (!client.getTracerProvider().isEnabled()) {
- return createContainerIfNotExistsInternal(container.read(), new CosmosContainerProperties(id,
- partitionKeyPath),
- options, null);
- }
+ return createContainerIfNotExistsInternal(new CosmosContainerProperties(id, partitionKeyPath), container,
+ options);
+ }
- return withContext(context -> createContainerIfNotExistsInternal(new CosmosContainerProperties(id,
- partitionKeyPath), container, options, context));
+ private Mono createContainerIfNotExistsInternal(
+ CosmosContainerProperties containerProperties, CosmosAsyncContainer container,
+ CosmosContainerRequestOptions options) {
+ return container.read(options).onErrorResume(exception -> {
+ final Throwable unwrappedException = Exceptions.unwrap(exception);
+ if (unwrappedException instanceof CosmosException) {
+ final CosmosException cosmosException = (CosmosException) unwrappedException;
+ if (cosmosException.getStatusCode() == HttpConstants.StatusCodes.NOTFOUND) {
+ return createContainer(containerProperties, options);
+ }
+ }
+ return Mono.error(unwrappedException);
+ });
}
/**
@@ -459,15 +430,12 @@ Mono createContainerIfNotExists(
*/
public CosmosPagedFlux readAllContainers(CosmosQueryRequestOptions options) {
return UtilBridgeInternal.createCosmosPagedFlux(pagedFluxOptions -> {
- String spanName = "readAllContainers." + this.getId();
- pagedFluxOptions.setTracerInformation(this.getClient().getTracerProvider(), spanName,
- this.getClient().getServiceEndpoint(), getId());
setContinuationTokenAndMaxItemCount(pagedFluxOptions, options);
return getDocClientWrapper().readCollections(getLink(), options)
.map(response -> BridgeInternal.createFeedResponse(
ModelBridgeInternal.getCosmosContainerPropertiesFromV2Results(response.getResults()),
response.getResponseHeaders()));
- }, this.getClient().getTracerProvider().isEnabled());
+ });
}
/**
@@ -496,7 +464,7 @@ public CosmosPagedFlux readAllContainers() {
* obtained containers or an error.
*/
public CosmosPagedFlux queryContainers(String query) {
- return queryContainersInternal(new SqlQuerySpec(query), new CosmosQueryRequestOptions());
+ return queryContainers(new SqlQuerySpec(query));
}
/**
@@ -512,7 +480,7 @@ public CosmosPagedFlux queryContainers(String query)
* obtained containers or an error.
*/
public CosmosPagedFlux queryContainers(String query, CosmosQueryRequestOptions options) {
- return queryContainersInternal(new SqlQuerySpec(query), options);
+ return queryContainers(new SqlQuerySpec(query), options);
}
/**
@@ -527,7 +495,7 @@ public CosmosPagedFlux queryContainers(String query,
* obtained containers or an error.
*/
public CosmosPagedFlux queryContainers(SqlQuerySpec querySpec) {
- return queryContainersInternal(querySpec, new CosmosQueryRequestOptions());
+ return queryContainers(querySpec, new CosmosQueryRequestOptions());
}
/**
@@ -542,9 +510,14 @@ public CosmosPagedFlux queryContainers(SqlQuerySpec q
* @return a {@link CosmosPagedFlux} containing one or several feed response pages of the
* obtained containers or an error.
*/
- public CosmosPagedFlux queryContainers(SqlQuerySpec querySpec
- , CosmosQueryRequestOptions options) {
- return queryContainersInternal(querySpec, options);
+ public CosmosPagedFlux queryContainers(SqlQuerySpec querySpec, CosmosQueryRequestOptions options) {
+ return UtilBridgeInternal.createCosmosPagedFlux(pagedFluxOptions -> {
+ setContinuationTokenAndMaxItemCount(pagedFluxOptions, options);
+ return getDocClientWrapper().queryCollections(getLink(), querySpec, options)
+ .map(response -> BridgeInternal.createFeedResponse(
+ ModelBridgeInternal.getCosmosContainerPropertiesFromV2Results(response.getResults()),
+ response.getResponseHeaders()));
+ });
}
/**
@@ -557,6 +530,8 @@ public CosmosAsyncContainer getContainer(String id) {
return new CosmosAsyncContainer(id, this);
}
+ /** User operations **/
+
/**
* Creates a user After subscription the operation will be performed. The
* {@link Mono} upon successful completion will contain a single resource
@@ -568,12 +543,11 @@ public CosmosAsyncContainer getContainer(String id) {
* created cosmos user or an error.
*/
public Mono createUser(CosmosUserProperties userProperties) {
- if (!client.getTracerProvider().isEnabled()) {
- return createUserInternal(userProperties);
- }
- return withContext(context -> createUserInternal(userProperties, context));
+ return getDocClientWrapper().createUser(this.getLink(), ModelBridgeInternal.getV2User(userProperties), null)
+ .map(response -> ModelBridgeInternal.createCosmosUserResponse(response)).single();
}
+
/**
* Upsert a user. Upsert will create a new user if it doesn't exist, or replace
* the existing one if it does. After subscription the operation will be
@@ -586,11 +560,8 @@ public Mono createUser(CosmosUserProperties userProperties)
* upserted user or an error.
*/
public Mono upsertUser(CosmosUserProperties userProperties) {
- if (!client.getTracerProvider().isEnabled()) {
- return upsertUserInternal(userProperties);
- }
-
- return withContext(context -> upsertUserInternal(userProperties, context));
+ return getDocClientWrapper().upsertUser(this.getLink(), ModelBridgeInternal.getV2User(userProperties), null)
+ .map(response -> ModelBridgeInternal.createCosmosUserResponse(response)).single();
}
/**
@@ -620,15 +591,12 @@ public CosmosPagedFlux readAllUsers() {
*/
CosmosPagedFlux readAllUsers(CosmosQueryRequestOptions options) {
return UtilBridgeInternal.createCosmosPagedFlux(pagedFluxOptions -> {
- String spanName = "readAllUsers." + this.getId();
- pagedFluxOptions.setTracerInformation(this.getClient().getTracerProvider(), spanName,
- this.getClient().getServiceEndpoint(), getId());
setContinuationTokenAndMaxItemCount(pagedFluxOptions, options);
return getDocClientWrapper().readUsers(getLink(), options)
.map(response -> BridgeInternal.createFeedResponse(
ModelBridgeInternal.getCosmosUserPropertiesFromV2Results(response.getResults()), response
.getResponseHeaders()));
- }, this.getClient().getTracerProvider().isEnabled());
+ });
}
/**
@@ -659,7 +627,7 @@ public CosmosPagedFlux queryUsers(String query) {
* obtained users or an error.
*/
public CosmosPagedFlux queryUsers(String query, CosmosQueryRequestOptions options) {
- return queryUsersInternal(new SqlQuerySpec(query), options);
+ return queryUsers(new SqlQuerySpec(query), options);
}
/**
@@ -674,7 +642,7 @@ public CosmosPagedFlux queryUsers(String query, CosmosQuer
* obtained users or an error.
*/
public CosmosPagedFlux queryUsers(SqlQuerySpec querySpec) {
- return queryUsersInternal(querySpec, new CosmosQueryRequestOptions());
+ return queryUsers(querySpec, new CosmosQueryRequestOptions());
}
/**
@@ -690,7 +658,13 @@ public CosmosPagedFlux queryUsers(SqlQuerySpec querySpec)
* obtained users or an error.
*/
public CosmosPagedFlux queryUsers(SqlQuerySpec querySpec, CosmosQueryRequestOptions options) {
- return queryUsersInternal(querySpec, options);
+ return UtilBridgeInternal.createCosmosPagedFlux(pagedFluxOptions -> {
+ setContinuationTokenAndMaxItemCount(pagedFluxOptions, options);
+ return getDocClientWrapper().queryUsers(getLink(), querySpec, options)
+ .map(response -> BridgeInternal.createFeedResponseWithQueryMetrics(
+ ModelBridgeInternal.getCosmosUserPropertiesFromV2Results(response.getResults()), response.getResponseHeaders(),
+ ModelBridgeInternal.queryMetrics(response)));
+ });
}
/**
@@ -711,11 +685,30 @@ public CosmosAsyncUser getUser(String id) {
* @return the mono.
*/
public Mono replaceThroughput(ThroughputProperties throughputProperties) {
- if(!this.client.getTracerProvider().isEnabled()) {
- return replaceThroughputInternal(this.read(), throughputProperties);
- }
-
- return withContext(context -> replaceThroughputInternal(throughputProperties, context));
+ return this.read()
+ .flatMap(response -> this.getDocClientWrapper()
+ .queryOffers(getOfferQuerySpecFromResourceId(response.getProperties().getResourceId()),
+ new CosmosQueryRequestOptions())
+ .single()
+ .flatMap(offerFeedResponse -> {
+ if (offerFeedResponse.getResults().isEmpty()) {
+ return Mono.error(BridgeInternal
+ .createCosmosException(
+ HttpConstants.StatusCodes.BADREQUEST,
+ "No offers found for the " +
+ "resource " + this.getId()));
+ }
+
+ Offer existingOffer = offerFeedResponse.getResults().get(0);
+ Offer updatedOffer =
+ ModelBridgeInternal.updateOfferFromProperties(existingOffer,
+ throughputProperties);
+
+ return this.getDocClientWrapper()
+ .replaceOffer(updatedOffer)
+ .single();
+ })
+ .map(ModelBridgeInternal::createThroughputRespose));
}
/**
@@ -724,11 +717,26 @@ public Mono replaceThroughput(ThroughputProperties throughpu
* @return the mono containing throughput response.
*/
public Mono readThroughput() {
- if(!this.client.getTracerProvider().isEnabled()) {
- return readThroughputInternal(this.read());
- }
-
- return withContext(context -> readThroughputInternal(context));
+ return this.read()
+ .flatMap(response -> getDocClientWrapper()
+ .queryOffers(getOfferQuerySpecFromResourceId(response.getProperties().getResourceId()),
+ new CosmosQueryRequestOptions())
+ .single()
+ .flatMap(offerFeedResponse -> {
+ if (offerFeedResponse.getResults().isEmpty()) {
+ return Mono.error(BridgeInternal
+ .createCosmosException(
+ HttpConstants.StatusCodes.BADREQUEST,
+ "No offers found for the " +
+ "resource " + this.getId()));
+ }
+ return getDocClientWrapper()
+ .readOffer(offerFeedResponse.getResults()
+ .get(0)
+ .getSelfLink())
+ .single();
+ })
+ .map(ModelBridgeInternal::createThroughputRespose));
}
SqlQuerySpec getOfferQuerySpecFromResourceId(String resourceId) {
@@ -760,218 +768,4 @@ String getLink() {
return this.link;
}
- private CosmosPagedFlux queryContainersInternal(SqlQuerySpec querySpec
- , CosmosQueryRequestOptions options) {
- return UtilBridgeInternal.createCosmosPagedFlux(pagedFluxOptions -> {
- String spanName = "queryContainers." + this.getId();
- pagedFluxOptions.setTracerInformation(this.getClient().getTracerProvider(), spanName,
- this.getClient().getServiceEndpoint(), getId());
- setContinuationTokenAndMaxItemCount(pagedFluxOptions, options);
- return getDocClientWrapper().queryCollections(getLink(), querySpec, options)
- .map(response -> BridgeInternal.createFeedResponse(
- ModelBridgeInternal.getCosmosContainerPropertiesFromV2Results(response.getResults()),
- response.getResponseHeaders()));
- }, this.getClient().getTracerProvider().isEnabled());
- }
-
- private CosmosPagedFlux queryUsersInternal(SqlQuerySpec querySpec, CosmosQueryRequestOptions options) {
- return UtilBridgeInternal.createCosmosPagedFlux(pagedFluxOptions -> {
- String spanName = "queryUsers." + this.getId();
- pagedFluxOptions.setTracerInformation(this.getClient().getTracerProvider(), spanName,
- this.getClient().getServiceEndpoint(), getId());
- setContinuationTokenAndMaxItemCount(pagedFluxOptions, options);
- return getDocClientWrapper().queryUsers(getLink(), querySpec, options)
- .map(response -> BridgeInternal.createFeedResponseWithQueryMetrics(
- ModelBridgeInternal.getCosmosUserPropertiesFromV2Results(response.getResults()), response.getResponseHeaders(),
- ModelBridgeInternal.queryMetrics(response)));
- }, this.getClient().getTracerProvider().isEnabled());
- }
-
- private Mono createContainerIfNotExistsInternal(
- CosmosContainerProperties containerProperties,
- CosmosAsyncContainer container,
- CosmosContainerRequestOptions options,
- Context context) {
- String spanName = "createContainerIfNotExistsInternal." + containerProperties.getId();
- Context nestedContext = context.addData(TracerProvider.COSMOS_CALL_DEPTH, TracerProvider.COSMOS_CALL_DEPTH_VAL);
- if (options == null) {
- options = new CosmosContainerRequestOptions();
- }
-
- Mono responseMono = createContainerIfNotExistsInternal(container.read(options, nestedContext), containerProperties, options, nestedContext);
- return this.client.getTracerProvider().traceEnabledCosmosResponsePublisher(responseMono, context,
- spanName,
- getId(),
- getClient().getServiceEndpoint());
- }
-
- private Mono createContainerIfNotExistsInternal(
- Mono responseMono,
- CosmosContainerProperties containerProperties,
- CosmosContainerRequestOptions options,
- Context context) {
- return responseMono.onErrorResume(exception -> {
- final Throwable unwrappedException = Exceptions.unwrap(exception);
- if (unwrappedException instanceof CosmosException) {
- final CosmosException cosmosException = (CosmosException) unwrappedException;
- if (cosmosException.getStatusCode() == HttpConstants.StatusCodes.NOTFOUND) {
- if(context != null) {
- return createContainerInternal(containerProperties, options, context);
- }
-
- return createContainer(containerProperties, options);
- }
- }
- return Mono.error(unwrappedException);
- });
- }
-
- private Mono createContainerInternal(
- CosmosContainerProperties containerProperties,
- CosmosContainerRequestOptions options,
- Context context) {
- String spanName = "createContainer." + containerProperties.getId();
- Mono responseMono = createContainerInternal(containerProperties, options);
- return this.client.getTracerProvider().traceEnabledCosmosResponsePublisher(responseMono, context,
- spanName,
- getId(),
- getClient().getServiceEndpoint());
- }
-
- private Mono createContainerInternal(
- CosmosContainerProperties containerProperties,
- CosmosContainerRequestOptions options) {
- return getDocClientWrapper()
- .createCollection(this.getLink(), ModelBridgeInternal.getV2Collection(containerProperties),
- ModelBridgeInternal.toRequestOptions(options))
- .map(response -> ModelBridgeInternal.createCosmosContainerResponse(response)).single();
- }
-
- Mono readInternal(CosmosDatabaseRequestOptions options, Context context) {
- String spanName = "readDatabase." + this.getId();
- Mono responseMono = readInternal(options);
- return this.client.getTracerProvider().traceEnabledCosmosResponsePublisher(responseMono, context,
- spanName,
- getId(),
- getClient().getServiceEndpoint());
- }
-
- private Mono readInternal(CosmosDatabaseRequestOptions options) {
- return getDocClientWrapper().readDatabase(getLink(),
- ModelBridgeInternal.toRequestOptions(options))
- .map(response -> ModelBridgeInternal.createCosmosDatabaseResponse(response)).single();
- }
-
- private Mono deleteInternal(CosmosDatabaseRequestOptions options, Context context) {
- String spanName = "deleteDatabase." + this.getId();
- Mono responseMono = deleteInternal(options);
- return this.client.getTracerProvider().traceEnabledCosmosResponsePublisher(responseMono, context,
- spanName,
- getId(),
- getClient().getServiceEndpoint());
- }
-
- private Mono deleteInternal(CosmosDatabaseRequestOptions options) {
- return getDocClientWrapper().deleteDatabase(getLink(),
- ModelBridgeInternal.toRequestOptions(options))
- .map(response -> ModelBridgeInternal.createCosmosDatabaseResponse(response)).single();
- }
-
- private Mono createUserInternal(CosmosUserProperties userProperties, Context context) {
- String spanName = "createUser." + this.getId();
- Mono responseMono = createUserInternal(userProperties);
- return this.client.getTracerProvider().traceEnabledCosmosResponsePublisher(responseMono, context,
- spanName,
- getId(),
- getClient().getServiceEndpoint());
- }
-
- private Mono createUserInternal(CosmosUserProperties userProperties) {
- return getDocClientWrapper().createUser(this.getLink(), ModelBridgeInternal.getV2User(userProperties), null)
- .map(response -> ModelBridgeInternal.createCosmosUserResponse(response)).single();
- }
-
- private Mono upsertUserInternal(CosmosUserProperties userProperties, Context context) {
- String spanName = "upsertUser." + this.getId();
- Mono responseMono = upsertUserInternal(userProperties);
- return this.client.getTracerProvider().traceEnabledCosmosResponsePublisher(responseMono, context,
- spanName, getId(), getClient().getServiceEndpoint());
- }
-
- private Mono upsertUserInternal(CosmosUserProperties userProperties) {
- return getDocClientWrapper().upsertUser(this.getLink(), ModelBridgeInternal.getV2User(userProperties), null)
- .map(response -> ModelBridgeInternal.createCosmosUserResponse(response)).single();
- }
-
- private Mono replaceThroughputInternal(ThroughputProperties throughputProperties, Context context){
- String spanName = "replaceThroughput." + this.getId();
- Context nestedContext = context.addData(TracerProvider.COSMOS_CALL_DEPTH, TracerProvider.COSMOS_CALL_DEPTH_VAL);
- Mono responseMono = replaceThroughputInternal(this.readInternal(new CosmosDatabaseRequestOptions(), nestedContext), throughputProperties);
- return this.client.getTracerProvider().traceEnabledCosmosResponsePublisher(responseMono,
- context,
- spanName,
- getId(),
- getClient().getServiceEndpoint());
- }
-
- private Mono replaceThroughputInternal(Mono responseMono, ThroughputProperties throughputProperties) {
- return responseMono
- .flatMap(response -> this.getDocClientWrapper()
- .queryOffers(getOfferQuerySpecFromResourceId(response.getProperties().getResourceId()),
- new CosmosQueryRequestOptions())
- .single()
- .flatMap(offerFeedResponse -> {
- if (offerFeedResponse.getResults().isEmpty()) {
- return Mono.error(BridgeInternal
- .createCosmosException(
- HttpConstants.StatusCodes.BADREQUEST,
- "No offers found for the " +
- "resource " + this.getId()));
- }
-
- Offer existingOffer = offerFeedResponse.getResults().get(0);
- Offer updatedOffer =
- ModelBridgeInternal.updateOfferFromProperties(existingOffer,
- throughputProperties);
-
- return this.getDocClientWrapper()
- .replaceOffer(updatedOffer)
- .single();
- })
- .map(ModelBridgeInternal::createThroughputRespose));
- }
-
- private Mono readThroughputInternal(Context context){
- String spanName = "readThroughput." + this.getId();
- Context nestedContext = context.addData(TracerProvider.COSMOS_CALL_DEPTH, TracerProvider.COSMOS_CALL_DEPTH_VAL);
- Mono responseMono = readThroughputInternal(this.readInternal(new CosmosDatabaseRequestOptions(), nestedContext));
- return this.client.getTracerProvider().traceEnabledCosmosResponsePublisher(responseMono,
- context,
- spanName,
- getId(),
- getClient().getServiceEndpoint());
- }
-
- private Mono readThroughputInternal(Mono responseMono) {
- return responseMono
- .flatMap(response -> getDocClientWrapper()
- .queryOffers(getOfferQuerySpecFromResourceId(response.getProperties().getResourceId()),
- new CosmosQueryRequestOptions())
- .single()
- .flatMap(offerFeedResponse -> {
- if (offerFeedResponse.getResults().isEmpty()) {
- return Mono.error(BridgeInternal
- .createCosmosException(
- HttpConstants.StatusCodes.BADREQUEST,
- "No offers found for the " +
- "resource " + this.getId()));
- }
- return getDocClientWrapper()
- .readOffer(offerFeedResponse.getResults()
- .get(0)
- .getSelfLink())
- .single();
- })
- .map(ModelBridgeInternal::createThroughputRespose));
- }
}
diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/CosmosAsyncPermission.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/CosmosAsyncPermission.java
index 128937f4f762..f01a52766820 100644
--- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/CosmosAsyncPermission.java
+++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/CosmosAsyncPermission.java
@@ -2,7 +2,6 @@
// Licensed under the MIT License.
package com.azure.cosmos;
-import com.azure.core.util.Context;
import com.azure.cosmos.implementation.Paths;
import com.azure.cosmos.models.CosmosPermissionResponse;
import com.azure.cosmos.models.CosmosPermissionProperties;
@@ -10,8 +9,6 @@
import com.azure.cosmos.models.ModelBridgeInternal;
import reactor.core.publisher.Mono;
-import static com.azure.core.util.FluxUtil.withContext;
-
/**
* Has methods to operate on a per-User Permission to access a specific resource
*/
@@ -59,13 +56,11 @@ public Mono read(CosmosPermissionRequestOptions option
if (options == null) {
options = new CosmosPermissionRequestOptions();
}
-
- if (!cosmosUser.getDatabase().getClient().getTracerProvider().isEnabled()) {
- return readInternal(options);
- }
-
- final CosmosPermissionRequestOptions requestOptions = options;
- return withContext(context -> readInternal(requestOptions, context));
+ return cosmosUser.getDatabase()
+ .getDocClientWrapper()
+ .readPermission(getLink(), ModelBridgeInternal.toRequestOptions(options))
+ .map(response -> ModelBridgeInternal.createCosmosPermissionResponse(response))
+ .single();
}
/**
@@ -84,13 +79,13 @@ public Mono replace(CosmosPermissionProperties permiss
if (options == null) {
options = new CosmosPermissionRequestOptions();
}
-
- if (!cosmosUser.getDatabase().getClient().getTracerProvider().isEnabled()) {
- return replaceInternal(permissionProperties, options);
- }
-
- final CosmosPermissionRequestOptions requestOptions = options;
- return withContext(context -> replaceInternal(permissionProperties, requestOptions, context));
+ CosmosAsyncDatabase databaseContext = cosmosUser.getDatabase();
+ return databaseContext
+ .getDocClientWrapper()
+ .replacePermission(ModelBridgeInternal.getPermission(permissionProperties, databaseContext.getId()),
+ ModelBridgeInternal.toRequestOptions(options))
+ .map(response -> ModelBridgeInternal.createCosmosPermissionResponse(response))
+ .single();
}
/**
@@ -107,13 +102,11 @@ public Mono delete(CosmosPermissionRequestOptions opti
if (options == null) {
options = new CosmosPermissionRequestOptions();
}
-
- if (!cosmosUser.getDatabase().getClient().getTracerProvider().isEnabled()) {
- return deleteInternal(options);
- }
-
- final CosmosPermissionRequestOptions requestOptions = options;
- return withContext(context -> deleteInternal(requestOptions, context));
+ return cosmosUser.getDatabase()
+ .getDocClientWrapper()
+ .deletePermission(getLink(), ModelBridgeInternal.toRequestOptions(options))
+ .map(response -> ModelBridgeInternal.createCosmosPermissionResponse(response))
+ .single();
}
String getURIPathSegment() {
@@ -133,67 +126,4 @@ String getLink() {
builder.append(getId());
return builder.toString();
}
-
- private Mono readInternal(CosmosPermissionRequestOptions options, Context context) {
-
- String spanName = "readPermission." + cosmosUser.getId();
- Mono responseMono = readInternal(options);
- return cosmosUser.getDatabase().getClient().getTracerProvider().traceEnabledCosmosResponsePublisher(responseMono, context,
- spanName,
- cosmosUser.getDatabase().getId(),
- cosmosUser.getDatabase().getClient().getServiceEndpoint());
- }
-
- private Mono readInternal(CosmosPermissionRequestOptions options) {
-
- return cosmosUser.getDatabase()
- .getDocClientWrapper()
- .readPermission(getLink(), ModelBridgeInternal.toRequestOptions(options))
- .map(response -> ModelBridgeInternal.createCosmosPermissionResponse(response))
- .single();
- }
-
- private Mono replaceInternal(CosmosPermissionProperties permissionProperties,
- CosmosPermissionRequestOptions options,
- Context context) {
-
- String spanName = "replacePermission." + cosmosUser.getId();
- Mono responseMono = replaceInternal(permissionProperties, options);
- return cosmosUser.getDatabase().getClient().getTracerProvider().traceEnabledCosmosResponsePublisher(responseMono, context,
- spanName,
- cosmosUser.getDatabase().getId(),
- cosmosUser.getDatabase().getClient().getServiceEndpoint());
- }
-
- private Mono replaceInternal(CosmosPermissionProperties permissionProperties,
- CosmosPermissionRequestOptions options) {
- CosmosAsyncDatabase databaseContext = cosmosUser.getDatabase();
- return cosmosUser.getDatabase()
- .getDocClientWrapper()
- .replacePermission(ModelBridgeInternal.getPermission(permissionProperties, databaseContext.getId()),
- ModelBridgeInternal.toRequestOptions(options))
- .map(response -> ModelBridgeInternal.createCosmosPermissionResponse(response))
- .single();
- }
-
- private Mono deleteInternal(CosmosPermissionRequestOptions options,
- Context context) {
-
- String spanName = "deletePermission." + cosmosUser.getId();
- Mono responseMono = deleteInternal(options);
- return cosmosUser.getDatabase().getClient().getTracerProvider().traceEnabledCosmosResponsePublisher(responseMono, context,
- spanName,
- cosmosUser.getDatabase().getId(),
- cosmosUser.getDatabase().getClient().getServiceEndpoint());
- }
-
- private Mono deleteInternal(CosmosPermissionRequestOptions options) {
-
- return cosmosUser.getDatabase()
- .getDocClientWrapper()
- .deletePermission(getLink(), ModelBridgeInternal.toRequestOptions(options))
- .map(response -> ModelBridgeInternal.createCosmosPermissionResponse(response))
- .single();
- }
-
}
diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/CosmosAsyncScripts.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/CosmosAsyncScripts.java
index 7d4e22244948..7ea5249b8b70 100644
--- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/CosmosAsyncScripts.java
+++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/CosmosAsyncScripts.java
@@ -2,25 +2,23 @@
// Licensed under the MIT License.
package com.azure.cosmos;
-import com.azure.core.util.Context;
import com.azure.cosmos.implementation.StoredProcedure;
import com.azure.cosmos.implementation.Trigger;
import com.azure.cosmos.implementation.UserDefinedFunction;
-import com.azure.cosmos.models.CosmosQueryRequestOptions;
+import com.azure.cosmos.models.CosmosStoredProcedureResponse;
+import com.azure.cosmos.models.CosmosTriggerResponse;
+import com.azure.cosmos.models.CosmosUserDefinedFunctionResponse;
import com.azure.cosmos.models.CosmosStoredProcedureProperties;
import com.azure.cosmos.models.CosmosStoredProcedureRequestOptions;
-import com.azure.cosmos.models.CosmosStoredProcedureResponse;
import com.azure.cosmos.models.CosmosTriggerProperties;
-import com.azure.cosmos.models.CosmosTriggerResponse;
import com.azure.cosmos.models.CosmosUserDefinedFunctionProperties;
-import com.azure.cosmos.models.CosmosUserDefinedFunctionResponse;
+import com.azure.cosmos.models.CosmosQueryRequestOptions;
import com.azure.cosmos.models.ModelBridgeInternal;
import com.azure.cosmos.models.SqlQuerySpec;
import com.azure.cosmos.util.CosmosPagedFlux;
import com.azure.cosmos.util.UtilBridgeInternal;
import reactor.core.publisher.Mono;
-import static com.azure.core.util.FluxUtil.withContext;
import static com.azure.cosmos.implementation.Utils.setContinuationTokenAndMaxItemCount;
/**
@@ -73,12 +71,10 @@ public Mono createStoredProcedure(
StoredProcedure sProc = new StoredProcedure();
sProc.setId(properties.getId());
sProc.setBody(properties.getBody());
- if (!container.getDatabase().getClient().getTracerProvider().isEnabled()) {
- return createStoredProcedureInternal(sProc, options);
- }
-
- final CosmosStoredProcedureRequestOptions requestOptions = options;
- return withContext(context -> createStoredProcedureInternal(sProc, requestOptions, context));
+ return database.getDocClientWrapper()
+ .createStoredProcedure(container.getLink(), sProc, ModelBridgeInternal.toRequestOptions(options))
+ .map(response -> ModelBridgeInternal.createCosmosStoredProcedureResponse(response))
+ .single();
}
/**
@@ -112,18 +108,13 @@ public CosmosPagedFlux readAllStoredProcedures(
*/
CosmosPagedFlux readAllStoredProcedures(CosmosQueryRequestOptions options) {
return UtilBridgeInternal.createCosmosPagedFlux(pagedFluxOptions -> {
- String spanName = "readAllStoredProcedures." + this.container.getId();
- pagedFluxOptions.setTracerInformation(this.container.getDatabase().getClient().getTracerProvider(),
- spanName,
- this.container.getDatabase().getClient().getServiceEndpoint(),
- this.container.getDatabase().getId());
setContinuationTokenAndMaxItemCount(pagedFluxOptions, options);
return database.getDocClientWrapper()
.readStoredProcedures(container.getLink(), options)
.map(response -> BridgeInternal.createFeedResponse(
ModelBridgeInternal.getCosmosStoredProcedurePropertiesFromV2Results(response.getResults()),
response.getResponseHeaders()));
- }, this.container.getDatabase().getClient().getTracerProvider().isEnabled());
+ });
}
/**
@@ -141,8 +132,8 @@ CosmosPagedFlux readAllStoredProcedures(CosmosQ
*/
public CosmosPagedFlux queryStoredProcedures(
String query,
- CosmosQueryRequestOptions options) {
- return queryStoredProceduresInternal(new SqlQuerySpec(query), options);
+ CosmosQueryRequestOptions options) {
+ return queryStoredProcedures(new SqlQuerySpec(query), options);
}
/**
@@ -161,7 +152,14 @@ public CosmosPagedFlux queryStoredProcedures(
public CosmosPagedFlux queryStoredProcedures(
SqlQuerySpec querySpec,
CosmosQueryRequestOptions options) {
- return queryStoredProceduresInternal(querySpec, options);
+ return UtilBridgeInternal.createCosmosPagedFlux(pagedFluxOptions -> {
+ setContinuationTokenAndMaxItemCount(pagedFluxOptions, options);
+ return database.getDocClientWrapper()
+ .queryStoredProcedures(container.getLink(), querySpec, options)
+ .map(response -> BridgeInternal.createFeedResponse(
+ ModelBridgeInternal.getCosmosStoredProcedurePropertiesFromV2Results(response.getResults()),
+ response.getResponseHeaders()));
+ });
}
/**
@@ -174,6 +172,7 @@ public CosmosAsyncStoredProcedure getStoredProcedure(String id) {
return new CosmosAsyncStoredProcedure(id, this.container);
}
+
/* UDF Operations */
/**
@@ -192,11 +191,10 @@ public Mono createUserDefinedFunction(
UserDefinedFunction udf = new UserDefinedFunction();
udf.setId(properties.getId());
udf.setBody(properties.getBody());
- if (!container.getDatabase().getClient().getTracerProvider().isEnabled()) {
- return createUserDefinedFunctionInternal(udf);
- }
- return withContext(context -> createUserDefinedFunctionInternal(udf, context));
+ return database.getDocClientWrapper()
+ .createUserDefinedFunction(container.getLink(), udf, null)
+ .map(response -> ModelBridgeInternal.createCosmosUserDefinedFunctionResponse(response)).single();
}
/**
@@ -228,18 +226,13 @@ public CosmosPagedFlux readAllUserDefinedFu
*/
CosmosPagedFlux readAllUserDefinedFunctions(CosmosQueryRequestOptions options) {
return UtilBridgeInternal.createCosmosPagedFlux(pagedFluxOptions -> {
- String spanName = "readAllUserDefinedFunctions." + this.container.getId();
- pagedFluxOptions.setTracerInformation(this.container.getDatabase().getClient().getTracerProvider(),
- spanName,
- this.container.getDatabase().getClient().getServiceEndpoint(),
- this.container.getDatabase().getId());
setContinuationTokenAndMaxItemCount(pagedFluxOptions, options);
return database.getDocClientWrapper()
- .readUserDefinedFunctions(container.getLink(), options)
- .map(response -> BridgeInternal.createFeedResponse(
- ModelBridgeInternal.getCosmosUserDefinedFunctionPropertiesFromV2Results(response.getResults()),
- response.getResponseHeaders()));
- }, this.container.getDatabase().getClient().getTracerProvider().isEnabled());
+ .readUserDefinedFunctions(container.getLink(), options)
+ .map(response -> BridgeInternal.createFeedResponse(
+ ModelBridgeInternal.getCosmosUserDefinedFunctionPropertiesFromV2Results(response.getResults()),
+ response.getResponseHeaders()));
+ });
}
/**
@@ -279,7 +272,14 @@ public CosmosPagedFlux queryUserDefinedFunc
public CosmosPagedFlux queryUserDefinedFunctions(
SqlQuerySpec querySpec,
CosmosQueryRequestOptions options) {
- return queryUserDefinedFunctionsInternal(querySpec, options);
+ return UtilBridgeInternal.createCosmosPagedFlux(pagedFluxOptions -> {
+ setContinuationTokenAndMaxItemCount(pagedFluxOptions, options);
+ return database.getDocClientWrapper()
+ .queryUserDefinedFunctions(container.getLink(), querySpec, options)
+ .map(response -> BridgeInternal.createFeedResponse(
+ ModelBridgeInternal.getCosmosUserDefinedFunctionPropertiesFromV2Results(response.getResults()),
+ response.getResponseHeaders()));
+ });
}
/**
@@ -305,11 +305,12 @@ public CosmosAsyncUserDefinedFunction getUserDefinedFunction(String id) {
* @return an {@link Mono} containing the single resource response with the created trigger or an error.
*/
public Mono createTrigger(CosmosTriggerProperties properties) {
- if (!container.getDatabase().getClient().getTracerProvider().isEnabled()) {
- return createTriggerInternal(properties);
- }
+ Trigger trigger = new Trigger(ModelBridgeInternal.toJsonFromJsonSerializable(ModelBridgeInternal.getResource(properties)));
- return withContext(context -> createTriggerInternal(properties, context));
+ return database.getDocClientWrapper()
+ .createTrigger(container.getLink(), trigger, null)
+ .map(response -> ModelBridgeInternal.createCosmosTriggerResponse(response))
+ .single();
}
/**
@@ -343,18 +344,13 @@ public CosmosPagedFlux readAllTriggers() {
*/
CosmosPagedFlux readAllTriggers(CosmosQueryRequestOptions options) {
return UtilBridgeInternal.createCosmosPagedFlux(pagedFluxOptions -> {
- String spanName = "readAllTriggers." + this.container.getId();
- pagedFluxOptions.setTracerInformation(this.container.getDatabase().getClient().getTracerProvider(),
- spanName,
- this.container.getDatabase().getClient().getServiceEndpoint(),
- this.container.getDatabase().getId());
setContinuationTokenAndMaxItemCount(pagedFluxOptions, options);
return database.getDocClientWrapper()
.readTriggers(container.getLink(), options)
.map(response -> BridgeInternal.createFeedResponse(
ModelBridgeInternal.getCosmosTriggerPropertiesFromV2Results(response.getResults()),
response.getResponseHeaders()));
- }, this.container.getDatabase().getClient().getTracerProvider().isEnabled());
+ });
}
/**
@@ -370,7 +366,7 @@ CosmosPagedFlux readAllTriggers(CosmosQueryRequestOptio
* error.
*/
public CosmosPagedFlux queryTriggers(String query, CosmosQueryRequestOptions options) {
- return queryTriggersInternal(false, new SqlQuerySpec(query), options);
+ return queryTriggers(new SqlQuerySpec(query), options);
}
/**
@@ -388,7 +384,14 @@ public CosmosPagedFlux queryTriggers(String query, Cosm
public CosmosPagedFlux queryTriggers(
SqlQuerySpec querySpec,
CosmosQueryRequestOptions options) {
- return queryTriggersInternal(true, querySpec, options);
+ return UtilBridgeInternal.createCosmosPagedFlux(pagedFluxOptions -> {
+ setContinuationTokenAndMaxItemCount(pagedFluxOptions, options);
+ return database.getDocClientWrapper()
+ .queryTriggers(container.getLink(), querySpec, options)
+ .map(response -> BridgeInternal.createFeedResponse(
+ ModelBridgeInternal.getCosmosTriggerPropertiesFromV2Results(response.getResults()),
+ response.getResponseHeaders()));
+ });
}
/**
@@ -401,120 +404,4 @@ public CosmosAsyncTrigger getTrigger(String id) {
return new CosmosAsyncTrigger(id, this.container);
}
- private CosmosPagedFlux queryStoredProceduresInternal(
- SqlQuerySpec querySpec,
- CosmosQueryRequestOptions options) {
- return UtilBridgeInternal.createCosmosPagedFlux(pagedFluxOptions -> {
- String spanName = "queryStoredProcedures." + this.container.getId();
- pagedFluxOptions.setTracerInformation(this.container.getDatabase().getClient().getTracerProvider(),
- spanName,
- this.container.getDatabase().getClient().getServiceEndpoint(),
- this.container.getDatabase().getId());
- setContinuationTokenAndMaxItemCount(pagedFluxOptions, options);
- return database.getDocClientWrapper()
- .queryStoredProcedures(container.getLink(), querySpec, options)
- .map(response -> BridgeInternal.createFeedResponse(
- ModelBridgeInternal.getCosmosStoredProcedurePropertiesFromV2Results(response.getResults()),
- response.getResponseHeaders()));
- }, this.container.getDatabase().getClient().getTracerProvider().isEnabled());
- }
-
- private CosmosPagedFlux queryUserDefinedFunctionsInternal(
- SqlQuerySpec querySpec,
- CosmosQueryRequestOptions options) {
- return UtilBridgeInternal.createCosmosPagedFlux(pagedFluxOptions -> {
- String spanName = "queryUserDefinedFunctions." + this.container.getId();
- pagedFluxOptions.setTracerInformation(this.container.getDatabase().getClient().getTracerProvider(),
- spanName,
- this.container.getDatabase().getClient().getServiceEndpoint(),
- this.container.getDatabase().getId());
- setContinuationTokenAndMaxItemCount(pagedFluxOptions, options);
- return database.getDocClientWrapper()
- .queryUserDefinedFunctions(container.getLink(), querySpec, options)
- .map(response -> BridgeInternal.createFeedResponse(
- ModelBridgeInternal.getCosmosUserDefinedFunctionPropertiesFromV2Results(response.getResults()),
- response.getResponseHeaders()));
- }, this.container.getDatabase().getClient().getTracerProvider().isEnabled());
- }
-
- private CosmosPagedFlux queryTriggersInternal(
- boolean isParameterised,
- SqlQuerySpec querySpec,
- CosmosQueryRequestOptions options) {
- return UtilBridgeInternal.createCosmosPagedFlux(pagedFluxOptions -> {
- String spanName;
- if (isParameterised) {
- spanName = "queryTriggers." + this.container.getId() + "." + querySpec.getQueryText();
- } else {
- spanName = "queryTriggers." + this.container.getId();
- }
-
- pagedFluxOptions.setTracerInformation(this.container.getDatabase().getClient().getTracerProvider(),
- spanName,
- this.container.getDatabase().getClient().getServiceEndpoint(),
- this.container.getDatabase().getId());
- setContinuationTokenAndMaxItemCount(pagedFluxOptions, options);
- return database.getDocClientWrapper()
- .queryTriggers(container.getLink(), querySpec, options)
- .map(response -> BridgeInternal.createFeedResponse(
- ModelBridgeInternal.getCosmosTriggerPropertiesFromV2Results(response.getResults()),
- response.getResponseHeaders()));
- }, this.container.getDatabase().getClient().getTracerProvider().isEnabled());
- }
-
- private Mono createStoredProcedureInternal(StoredProcedure sProc,
- CosmosStoredProcedureRequestOptions options,
- Context context) {
- String spanName = "createStoredProcedure." + container.getId();
- Mono responseMono = createStoredProcedureInternal(sProc, options);
- return this.container.getDatabase().getClient().getTracerProvider().traceEnabledCosmosResponsePublisher(responseMono,
- context,
- spanName,
- database.getId(),
- database.getClient().getServiceEndpoint());
- }
-
- private Mono createStoredProcedureInternal(StoredProcedure sProc,
- CosmosStoredProcedureRequestOptions options) {
- return database.getDocClientWrapper()
- .createStoredProcedure(container.getLink(), sProc, ModelBridgeInternal.toRequestOptions(options)).map(response -> ModelBridgeInternal.createCosmosStoredProcedureResponse(response))
- .single();
- }
-
- private Mono createUserDefinedFunctionInternal(
- UserDefinedFunction udf,
- Context context) {
- String spanName = "createUserDefinedFunction." + container.getId();
- Mono responseMono = createUserDefinedFunctionInternal(udf);
- return this.container.getDatabase().getClient().getTracerProvider().traceEnabledCosmosResponsePublisher(responseMono,
- context,
- spanName,
- database.getId(),
- database.getClient().getServiceEndpoint());
- }
-
- private Mono createUserDefinedFunctionInternal(
- UserDefinedFunction udf) {
- return database.getDocClientWrapper()
- .createUserDefinedFunction(container.getLink(), udf, null).map(response -> ModelBridgeInternal.createCosmosUserDefinedFunctionResponse(response)).single();
- }
-
- private Mono createTriggerInternal(CosmosTriggerProperties properties, Context context) {
- String spanName = "createTrigger." + container.getId();
- Mono responseMono = createTriggerInternal(properties);
- return this.container.getDatabase().getClient().getTracerProvider().traceEnabledCosmosResponsePublisher(responseMono,
- context,
- spanName,
- database.getId(),
- database.getClient().getServiceEndpoint());
- }
-
- private Mono createTriggerInternal(CosmosTriggerProperties properties) {
- Trigger trigger = new Trigger(ModelBridgeInternal.toJsonFromJsonSerializable(ModelBridgeInternal.getResource(properties)));
- return database.getDocClientWrapper()
- .createTrigger(container.getLink(), trigger, null)
- .map(response -> ModelBridgeInternal.createCosmosTriggerResponse(response))
- .single();
- }
-
}
diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/CosmosAsyncStoredProcedure.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/CosmosAsyncStoredProcedure.java
index e6d4433de989..8e0a51768818 100644
--- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/CosmosAsyncStoredProcedure.java
+++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/CosmosAsyncStoredProcedure.java
@@ -2,7 +2,6 @@
// Licensed under the MIT License.
package com.azure.cosmos;
-import com.azure.core.util.Context;
import com.azure.cosmos.implementation.Paths;
import com.azure.cosmos.implementation.StoredProcedure;
import com.azure.cosmos.models.CosmosStoredProcedureResponse;
@@ -11,7 +10,6 @@
import com.azure.cosmos.models.ModelBridgeInternal;
import reactor.core.publisher.Mono;
-import static com.azure.core.util.FluxUtil.withContext;
import java.util.List;
/**
@@ -74,11 +72,12 @@ public Mono read() {
* @return an {@link Mono} containing the single resource response with the read stored procedure or an error.
*/
public Mono read(CosmosStoredProcedureRequestOptions options) {
- if (!cosmosContainer.getDatabase().getClient().getTracerProvider().isEnabled()) {
- return readInternal(options);
+ if (options == null) {
+ options = new CosmosStoredProcedureRequestOptions();
}
-
- return withContext(context -> readInternal(options, context));
+ return cosmosContainer.getDatabase().getDocClientWrapper().readStoredProcedure(getLink(),
+ ModelBridgeInternal.toRequestOptions(options))
+ .map(response -> ModelBridgeInternal.createCosmosStoredProcedureResponse(response)).single();
}
/**
@@ -107,11 +106,14 @@ public Mono