com.azure.cosmos.BridgeInternal Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of azure-cosmos Show documentation
Show all versions of azure-cosmos Show documentation
This Package contains Microsoft Azure Cosmos SDK (with Reactive Extension Reactor support) for Azure Cosmos DB SQL API
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
package com.azure.cosmos;
import com.azure.cosmos.implementation.AsyncDocumentClient;
import com.azure.cosmos.implementation.ClientSideRequestStatistics;
import com.azure.cosmos.implementation.Configs;
import com.azure.cosmos.implementation.Constants;
import com.azure.cosmos.implementation.CosmosError;
import com.azure.cosmos.implementation.DatabaseAccount;
import com.azure.cosmos.implementation.DiagnosticsClientContext;
import com.azure.cosmos.implementation.Document;
import com.azure.cosmos.implementation.FeedResponseDiagnostics;
import com.azure.cosmos.implementation.ImplementationBridgeHelpers;
import com.azure.cosmos.implementation.InternalObjectNode;
import com.azure.cosmos.implementation.JsonSerializable;
import com.azure.cosmos.implementation.MetadataDiagnosticsContext;
import com.azure.cosmos.implementation.QueryMetrics;
import com.azure.cosmos.implementation.ReplicationPolicy;
import com.azure.cosmos.implementation.RequestOptions;
import com.azure.cosmos.implementation.RequestTimeline;
import com.azure.cosmos.implementation.Resource;
import com.azure.cosmos.implementation.ResourceResponse;
import com.azure.cosmos.implementation.RetryContext;
import com.azure.cosmos.implementation.RxDocumentServiceRequest;
import com.azure.cosmos.implementation.RxDocumentServiceResponse;
import com.azure.cosmos.implementation.SerializationDiagnosticsContext;
import com.azure.cosmos.implementation.ServiceUnavailableException;
import com.azure.cosmos.implementation.StoredProcedureResponse;
import com.azure.cosmos.implementation.TracerProvider;
import com.azure.cosmos.implementation.Warning;
import com.azure.cosmos.implementation.directconnectivity.StoreResponse;
import com.azure.cosmos.implementation.directconnectivity.StoreResult;
import com.azure.cosmos.implementation.directconnectivity.Uri;
import com.azure.cosmos.implementation.directconnectivity.rntbd.RntbdChannelAcquisitionTimeline;
import com.azure.cosmos.implementation.directconnectivity.rntbd.RntbdEndpointStatistics;
import com.azure.cosmos.implementation.patch.PatchOperation;
import com.azure.cosmos.implementation.query.QueryInfo;
import com.azure.cosmos.implementation.query.metrics.ClientSideMetrics;
import com.azure.cosmos.implementation.routing.PartitionKeyInternal;
import com.azure.cosmos.models.CosmosBulkExecutionOptions;
import com.azure.cosmos.models.CosmosItemResponse;
import com.azure.cosmos.models.CosmosStoredProcedureProperties;
import com.azure.cosmos.models.FeedResponse;
import com.azure.cosmos.models.ModelBridgeInternal;
import com.azure.cosmos.models.PartitionKey;
import com.azure.cosmos.models.SqlQuerySpec;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import io.micrometer.core.instrument.MeterRegistry;
import java.net.URI;
import java.nio.ByteBuffer;
import java.time.Duration;
import java.time.Instant;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentMap;
import static com.azure.cosmos.implementation.Warning.INTERNAL_USE_ONLY_WARNING;
/**
* DO NOT USE.
* This is meant to be used only internally as a bridge access to classes in
* com.azure.cosmos
**/
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public final class BridgeInternal {
private BridgeInternal() {}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static CosmosDiagnostics createCosmosDiagnostics(DiagnosticsClientContext diagnosticsClientContext) {
return new CosmosDiagnostics(diagnosticsClientContext);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static Set getRegionsContacted(CosmosDiagnostics cosmosDiagnostics) {
return cosmosDiagnostics.clientSideRequestStatistics().getRegionsContacted();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static AsyncDocumentClient getContextClient(CosmosAsyncClient cosmosAsyncClient) {
return cosmosAsyncClient.getContextClient();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static String getServiceEndpoint(CosmosAsyncClient cosmosAsyncClient) {
return cosmosAsyncClient.getServiceEndpoint();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static boolean isClientTelemetryEnabled(CosmosAsyncClient cosmosAsyncClient) {
return cosmosAsyncClient.isClientTelemetryEnabled();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static Document documentFromObject(Object document, ObjectMapper mapper) {
return Document.fromObject(document, mapper);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static ByteBuffer serializeJsonToByteBuffer(Object document, ObjectMapper mapper) {
return InternalObjectNode.serializeJsonToByteBuffer(document, mapper);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static void monitorTelemetry(MeterRegistry registry) {
CosmosAsyncClient.setMonitorTelemetry(registry);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static ResourceResponse toResourceResponse(RxDocumentServiceResponse response,
Class cls) {
return new ResourceResponse(response, cls);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static FeedResponse toFeedResponsePage(RxDocumentServiceResponse response,
Class cls) {
return ModelBridgeInternal.toFeedResponsePage(response, cls);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static FeedResponse toFeedResponsePage(List results, Map headers, boolean noChanges) {
return ModelBridgeInternal.toFeedResponsePage(results, headers, noChanges);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static FeedResponse toChangeFeedResponsePage(RxDocumentServiceResponse response,
Class cls) {
return ModelBridgeInternal.toChaneFeedResponsePage(response, cls);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static StoredProcedureResponse toStoredProcedureResponse(RxDocumentServiceResponse response) {
return new StoredProcedureResponse(response);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static boolean noChanges(FeedResponse page) {
return ModelBridgeInternal.noChanges(page);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static FeedResponse createFeedResponse(List results,
Map headers) {
return ModelBridgeInternal.createFeedResponse(results, headers);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static FeedResponse createFeedResponseWithQueryMetrics(
List results,
Map headers,
ConcurrentMap queryMetricsMap,
QueryInfo.QueryPlanDiagnosticsContext diagnosticsContext,
boolean useEtagAsContinuation,
boolean isNoChangesResponse,
CosmosDiagnostics cosmosDiagnostics) {
FeedResponse feedResponseWithQueryMetrics = ModelBridgeInternal.createFeedResponseWithQueryMetrics(
results,
headers,
queryMetricsMap,
diagnosticsContext,
useEtagAsContinuation,
isNoChangesResponse);
ClientSideRequestStatistics requestStatistics;
if (cosmosDiagnostics != null) {
requestStatistics = cosmosDiagnostics.clientSideRequestStatistics();
if (requestStatistics != null) {
BridgeInternal.addClientSideDiagnosticsToFeed(feedResponseWithQueryMetrics.getCosmosDiagnostics(),
Collections.singletonList(requestStatistics));
}
BridgeInternal.addClientSideDiagnosticsToFeed(feedResponseWithQueryMetrics.getCosmosDiagnostics(),
cosmosDiagnostics.getFeedResponseDiagnostics()
.getClientSideRequestStatisticsList());
}
return feedResponseWithQueryMetrics;
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static CosmosDiagnostics createCosmosDiagnostics(Map queryMetricsMap) {
return new CosmosDiagnostics(new FeedResponseDiagnostics(queryMetricsMap));
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static void setFeedResponseDiagnostics(CosmosDiagnostics cosmosDiagnostics,
ConcurrentMap queryMetricsMap) {
cosmosDiagnostics.setFeedResponseDiagnostics(new FeedResponseDiagnostics(queryMetricsMap));
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static void setQueryPlanDiagnosticsContext(CosmosDiagnostics cosmosDiagnostics, QueryInfo.QueryPlanDiagnosticsContext diagnosticsContext) {
cosmosDiagnostics.getFeedResponseDiagnostics().setDiagnosticsContext(diagnosticsContext);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static void addClientSideDiagnosticsToFeed(CosmosDiagnostics cosmosDiagnostics,
List requestStatistics) {
cosmosDiagnostics.getFeedResponseDiagnostics().addClientSideRequestStatistics(requestStatistics);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static E setRequestTimeline(E e, RequestTimeline requestTimeline) {
e.setRequestTimeline(requestTimeline);
return e;
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static RequestTimeline getRequestTimeline(E e) {
return e.getRequestTimeline();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static E setChannelAcquisitionTimeline(E e, RntbdChannelAcquisitionTimeline channelAcquisitionTimeline) {
e.setChannelAcquisitionTimeline(channelAcquisitionTimeline);
return e;
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static RntbdChannelAcquisitionTimeline getChannelAcqusitionTimeline(E e) {
return e.getChannelAcquisitionTimeline();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static E setChannelTaskQueueSize(E e, int value) {
e.setRntbdChannelTaskQueueSize(value);
return e;
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static int getRntbdPendingRequestQueueSize(E e) {
return e.getRntbdPendingRequestQueueSize();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static E setRntbdPendingRequestQueueSize(E e, int value) {
e.setRntbdPendingRequestQueueSize(value);
return e;
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static int getChannelTaskQueueSize(E e) {
return e.getRntbdChannelTaskQueueSize();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static E setRntbdRequestLength(E e, int requestLen) {
e.setRntbdRequestLength(requestLen);
return e;
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static int getRntbdRequestLength(E e) {
return e.getRntbdRequestLength();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static E setRequestBodyLength(E e, int requestLen) {
e.setRequestPayloadLength(requestLen);
return e;
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static int getRequestBodyLength(E e) {
return e.getRequestPayloadLength();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static E setRntbdResponseLength(E e, int requestLen) {
e.setRntbdResponseLength(requestLen);
return e;
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static int getRntbdResponseLength(E e) {
return e.getRntbdResponseLength();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static E setResourceAddress(E e, String resourceAddress) {
e.setResourceAddress(resourceAddress);
return e;
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static E setServiceEndpointStatistics(E e, RntbdEndpointStatistics rntbdEndpointStatistics) {
e.setRntbdServiceEndpointStatistics(rntbdEndpointStatistics);
return e;
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static RntbdEndpointStatistics getServiceEndpointStatistics(E e) {
return e.getRntbdServiceEndpointStatistics();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static long getLSN(E e) {
return e.lsn;
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static String getPartitionKeyRangeId(E e) {
return e.partitionKeyRangeId;
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static String getResourceAddress(E e) {
return e.getResourceAddress();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static E setLSN(E e, long lsn) {
e.lsn = lsn;
return e;
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static E setPartitionKeyRangeId(E e, String partitionKeyRangeId) {
e.partitionKeyRangeId = partitionKeyRangeId;
return e;
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static boolean hasSendingRequestStarted(E e) {
return e.hasSendingRequestStarted();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static void setSendingRequestStarted(E e, boolean hasSendingRequestStarted) {
e.setSendingRequestHasStarted(hasSendingRequestStarted);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static boolean isEnableMultipleWriteLocations(DatabaseAccount account) {
return account.getEnableMultipleWriteLocations();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static Uri getRequestUri(CosmosException cosmosException) {
return cosmosException.requestUri;
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static void setRequestHeaders(CosmosException cosmosException,
Map requestHeaders) {
cosmosException.requestHeaders = requestHeaders;
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static void setSubStatusCode(CosmosException documentClientException, int subStatusCode) {
documentClientException.setSubStatusCode(subStatusCode);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static Map getRequestHeaders(
CosmosException cosmosException) {
return cosmosException.requestHeaders;
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static String getAltLink(Resource resource) {
return ModelBridgeInternal.getAltLink(resource);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static void setAltLink(Resource resource, String altLink) {
ModelBridgeInternal.setAltLink(resource, altLink);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static void setMaxReplicaSetSize(ReplicationPolicy replicationPolicy, int value) {
replicationPolicy.setMaxReplicaSetSize(value);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static void putQueryMetricsIntoMap(FeedResponse response, String partitionKeyRangeId,
QueryMetrics queryMetrics) {
ModelBridgeInternal.queryMetricsMap(response).put(partitionKeyRangeId, queryMetrics);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static QueryMetrics createQueryMetricsFromDelimitedStringAndClientSideMetrics(
String queryMetricsDelimitedString, ClientSideMetrics clientSideMetrics, String activityId, String indexUtilizationInfoJSONString) {
return QueryMetrics.createFromDelimitedStringAndClientSideMetrics(queryMetricsDelimitedString,
clientSideMetrics, activityId, indexUtilizationInfoJSONString);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static QueryMetrics createQueryMetricsFromCollection(Collection queryMetricsCollection) {
return QueryMetrics.createFromCollection(queryMetricsCollection);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static ClientSideMetrics getClientSideMetrics(QueryMetrics queryMetrics) {
return queryMetrics.getClientSideMetrics();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static String getInnerErrorMessage(CosmosException cosmosException) {
if (cosmosException == null) {
return null;
}
return cosmosException.innerErrorMessage();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static PartitionKey getPartitionKey(PartitionKeyInternal partitionKeyInternal) {
return new PartitionKey(partitionKeyInternal);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static void setProperty(JsonSerializable jsonSerializable, String propertyName, T value) {
ModelBridgeInternal.setProperty(jsonSerializable, propertyName, value);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static ObjectNode getObject(JsonSerializable jsonSerializable, String propertyName) {
return ModelBridgeInternal.getObjectNodeFromJsonSerializable(jsonSerializable, propertyName);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static void remove(JsonSerializable jsonSerializable, String propertyName) {
ModelBridgeInternal.removeFromJsonSerializable(jsonSerializable, propertyName);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static CosmosStoredProcedureProperties createCosmosStoredProcedureProperties(String jsonString) {
return ModelBridgeInternal.createCosmosStoredProcedureProperties(jsonString);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static Object getValue(JsonNode value) {
return ModelBridgeInternal.getValue(value);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static CosmosException setCosmosDiagnostics(
CosmosException cosmosException,
CosmosDiagnostics cosmosDiagnostics) {
return cosmosException.setDiagnostics(cosmosDiagnostics);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static CosmosException createCosmosException(int statusCode) {
return new CosmosException(statusCode, null, null, null);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static CosmosException createCosmosException(int statusCode, String errorMessage) {
CosmosException cosmosException = new CosmosException(statusCode, errorMessage, null, null);
cosmosException.setError(new CosmosError());
ModelBridgeInternal.setProperty(cosmosException.getError(), Constants.Properties.MESSAGE, errorMessage);
return cosmosException;
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static CosmosException createCosmosException(String resourceAddress, int statusCode, Exception innerException) {
return new CosmosException(resourceAddress, statusCode, null, null, innerException);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static CosmosException createCosmosException(String resourceAddress,
int statusCode,
CosmosError cosmosErrorResource,
Map responseHeaders) {
CosmosException cosmosException = new CosmosException(statusCode,
cosmosErrorResource == null ? null : cosmosErrorResource.getMessage(), responseHeaders, null);
cosmosException.setResourceAddress(resourceAddress);
cosmosException.setError(cosmosErrorResource);
return cosmosException;
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static CosmosError getCosmosError(CosmosException cosmosException) {
return cosmosException == null ? null : cosmosException.getError();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static CosmosException createCosmosException(String message,
Exception exception,
Map responseHeaders,
int statusCode,
String resourceAddress) {
CosmosException cosmosException = new CosmosException(statusCode, message, responseHeaders,
exception);
cosmosException.setResourceAddress(resourceAddress);
return cosmosException;
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static Configs extractConfigs(CosmosClientBuilder cosmosClientBuilder) {
return cosmosClientBuilder.configs();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static CosmosClientBuilder injectConfigs(CosmosClientBuilder cosmosClientBuilder, Configs configs) {
return cosmosClientBuilder.configs(configs);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static String extractContainerSelfLink(CosmosAsyncContainer container) {
return container.getLink();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static String extractResourceSelfLink(Resource resource) {
return resource.getSelfLink();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static void setResourceSelfLink(Resource resource, String selfLink) {
ModelBridgeInternal.setResourceSelfLink(resource, selfLink);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static void setTimestamp(Resource resource, Instant date) {
ModelBridgeInternal.setTimestamp(resource, date);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static List getClientSideRequestStatisticsList(CosmosDiagnostics cosmosDiagnostics) {
//Used only during aggregations like Aggregate/Orderby/Groupby which may contain clientSideStats in
//feedResponseDiagnostics. So we need to add from both the places
List clientSideRequestStatisticsList = new ArrayList<>();
if (cosmosDiagnostics != null) {
clientSideRequestStatisticsList
.addAll(cosmosDiagnostics.getFeedResponseDiagnostics().getClientSideRequestStatisticsList());
if (cosmosDiagnostics.clientSideRequestStatistics() != null) {
clientSideRequestStatisticsList.add(cosmosDiagnostics.clientSideRequestStatistics());
}
}
return clientSideRequestStatisticsList;
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static ClientSideRequestStatistics getClientSideRequestStatics(CosmosDiagnostics cosmosDiagnostics) {
ClientSideRequestStatistics clientSideRequestStatistics = null;
if (cosmosDiagnostics != null) {
clientSideRequestStatistics = cosmosDiagnostics.clientSideRequestStatistics();
}
return clientSideRequestStatistics;
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static void setGatewayRequestTimelineOnDiagnostics(CosmosDiagnostics cosmosDiagnostics,
RequestTimeline requestTimeline) {
cosmosDiagnostics.clientSideRequestStatistics().setGatewayRequestTimeline(requestTimeline);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static void recordResponse(CosmosDiagnostics cosmosDiagnostics,
RxDocumentServiceRequest request, StoreResult storeResult) {
cosmosDiagnostics.clientSideRequestStatistics().recordResponse(request, storeResult);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static void recordRetryContextEndTime(CosmosDiagnostics cosmosDiagnostics) {
cosmosDiagnostics.clientSideRequestStatistics().recordRetryContextEndTime();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static MetadataDiagnosticsContext getMetaDataDiagnosticContext(CosmosDiagnostics cosmosDiagnostics){
if(cosmosDiagnostics == null) {
return null;
}
return cosmosDiagnostics.clientSideRequestStatistics().getMetadataDiagnosticsContext();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static SerializationDiagnosticsContext getSerializationDiagnosticsContext(CosmosDiagnostics cosmosDiagnostics){
if(cosmosDiagnostics == null) {
return null;
}
return cosmosDiagnostics.clientSideRequestStatistics().getSerializationDiagnosticsContext();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static void recordGatewayResponse(CosmosDiagnostics cosmosDiagnostics,
RxDocumentServiceRequest rxDocumentServiceRequest,
StoreResponse storeResponse,
CosmosException exception) {
cosmosDiagnostics.clientSideRequestStatistics().recordGatewayResponse(rxDocumentServiceRequest, storeResponse, exception);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static String recordAddressResolutionStart(CosmosDiagnostics cosmosDiagnostics,
URI targetEndpoint,
boolean forceRefresh,
boolean forceCollectionRoutingMapRefresh) {
return cosmosDiagnostics.clientSideRequestStatistics().recordAddressResolutionStart(
targetEndpoint,
forceRefresh,
forceCollectionRoutingMapRefresh);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static void recordAddressResolutionEnd(CosmosDiagnostics cosmosDiagnostics,
String identifier,
String errorMessage) {
cosmosDiagnostics.clientSideRequestStatistics().recordAddressResolutionEnd(identifier, errorMessage);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static List getContactedReplicas(CosmosDiagnostics cosmosDiagnostics) {
return cosmosDiagnostics.clientSideRequestStatistics().getContactedReplicas();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static void setContactedReplicas(CosmosDiagnostics cosmosDiagnostics,
List contactedReplicas) {
cosmosDiagnostics.clientSideRequestStatistics().setContactedReplicas(contactedReplicas);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static Set getFailedReplicas(CosmosDiagnostics cosmosDiagnostics) {
return cosmosDiagnostics.clientSideRequestStatistics().getFailedReplicas();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static ConcurrentMap queryMetricsFromFeedResponse(FeedResponse feedResponse) {
return ModelBridgeInternal.queryMetrics(feedResponse);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static PartitionKeyInternal getPartitionKeyInternal(PartitionKey partitionKey) {
return ModelBridgeInternal.getPartitionKeyInternal(partitionKey);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static InternalObjectNode getProperties(CosmosItemResponse cosmosItemResponse) {
return ModelBridgeInternal.getInternalObjectNode(cosmosItemResponse);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static String getLink(CosmosAsyncContainer cosmosAsyncContainer) {
return cosmosAsyncContainer.getLink();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static CosmosAsyncConflict createCosmosAsyncConflict(String id, CosmosAsyncContainer container) {
return new CosmosAsyncConflict(id, container);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static CosmosAsyncContainer createCosmosAsyncContainer(String id, CosmosAsyncDatabase database) {
return new CosmosAsyncContainer(id, database);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static CosmosAsyncDatabase createCosmosAsyncDatabase(String id, CosmosAsyncClient client) {
return new CosmosAsyncDatabase(id, client);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static CosmosAsyncPermission createCosmosAsyncPermission(String id, CosmosAsyncUser user) {
return new CosmosAsyncPermission(id, user);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static CosmosAsyncUserDefinedFunction createCosmosAsyncUserDefinedFunction(String id, CosmosAsyncContainer container) {
return new CosmosAsyncUserDefinedFunction(id, container);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static CosmosAsyncUser createCosmosAsyncUser(String id, CosmosAsyncDatabase database) {
return new CosmosAsyncUser(id, database);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static CosmosDatabase createCosmosDatabase(String id, CosmosClient client, CosmosAsyncDatabase database) {
return new CosmosDatabase(id, client, database);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static TracerProvider getTracerProvider(CosmosAsyncClient client) {
return client.getTracerProvider();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static CosmosUser createCosmosUser(CosmosAsyncUser asyncUser, CosmosDatabase database, String id) {
return new CosmosUser(asyncUser, database, id);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static ConsistencyLevel fromServiceSerializedFormat(String consistencyLevel) {
return ConsistencyLevel.fromServiceSerializedFormat(consistencyLevel);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static CosmosException createServiceUnavailableException(Exception innerException) {
return new ServiceUnavailableException(innerException.getMessage(), innerException, null, null);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static Duration getRequestTimeoutFromDirectConnectionConfig(DirectConnectionConfig directConnectionConfig) {
return directConnectionConfig.getRequestTimeout();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static Duration getRequestTimeoutFromGatewayConnectionConfig(GatewayConnectionConfig gatewayConnectionConfig) {
return gatewayConnectionConfig.getRequestTimeout();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static String getOperationValueForCosmosItemOperationType(CosmosItemOperationType cosmosItemOperationType) {
return cosmosItemOperationType.getOperationValue();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static RequestOptions toRequestOptions(TransactionalBatchRequestOptions transactionalBatchRequestOptions) {
return transactionalBatchRequestOptions.toRequestOptions();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static TransactionalBatchOperationResult createTransactionBatchResult(
String eTag,
double requestCharge,
ObjectNode resourceObject,
int statusCode,
Duration retryAfter,
int subStatusCode,
CosmosItemOperation cosmosItemOperation) {
return new TransactionalBatchOperationResult(
eTag,
requestCharge,
resourceObject,
statusCode,
retryAfter,
subStatusCode,
cosmosItemOperation);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static CosmosBulkItemResponse createCosmosBulkItemResponse(
TransactionalBatchOperationResult result,
TransactionalBatchResponse response) {
return new CosmosBulkItemResponse(
result.getETag(),
result.getRequestCharge(),
result.getResourceObject(),
result.getStatusCode(),
result.getRetryAfterDuration(),
result.getSubStatusCode(),
response.getResponseHeaders(),
response.getDiagnostics());
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static CosmosBulkOperationResponse createCosmosBulkOperationResponse(
CosmosItemOperation operation,
CosmosBulkItemResponse response,
TContext batchContext) {
return new CosmosBulkOperationResponse<>(
operation,
response,
batchContext);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static CosmosBulkOperationResponse createCosmosBulkOperationResponse(
CosmosItemOperation operation,
Exception exception,
TContext batchContext) {
return new CosmosBulkOperationResponse<>(
operation,
exception,
batchContext);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static TransactionalBatchResponse createTransactionBatchResponse(
int responseStatusCode,
int responseSubStatusCode,
String errorMessage,
Map responseHeaders,
CosmosDiagnostics cosmosDiagnostics) {
return new TransactionalBatchResponse(
responseStatusCode,
responseSubStatusCode,
errorMessage,
responseHeaders,
cosmosDiagnostics);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static void addTransactionBatchResultInResponse(
TransactionalBatchResponse transactionalBatchResponse,
List transactionalBatchOperationResults) {
transactionalBatchResponse.addAll(transactionalBatchOperationResults);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static List getPatchOperationsFromCosmosPatch(CosmosPatchOperations cosmosPatchOperations) {
return cosmosPatchOperations.getPatchOperations();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static int getPayloadLength(TransactionalBatchResponse transactionalBatchResponse) {
return transactionalBatchResponse.getResponseLength();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static SqlQuerySpec getOfferQuerySpecFromResourceId(CosmosAsyncContainer container, String resourceId) {
return container.getDatabase().getOfferQuerySpecFromResourceId(resourceId);
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static CosmosAsyncContainer getControlContainerFromThroughputGlobalControlConfig(GlobalThroughputControlConfig globalControlConfig) {
return globalControlConfig.getControlContainer();
}
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static RetryContext getRetryContext(CosmosDiagnostics cosmosDiagnostics) {
if(cosmosDiagnostics != null && cosmosDiagnostics.clientSideRequestStatistics() != null) {
return cosmosDiagnostics.clientSideRequestStatistics().getRetryContext();
} else {
return null;
}
}
// This is only temporary, and will be removed once we delete BulkExecutionOptions
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static CosmosBulkExecutionOptions createCosmosBulkExecutionOptions(BulkExecutionOptions bulkExecutionOptions) {
return bulkExecutionOptions.toCosmosBulkExecutionOptions();
}
// This is only temporary, and will be removed once we delete CosmosItemOperationType
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static CosmosItemOperationType toDeprecatedCosmosItemOperationType(com.azure.cosmos.models.CosmosItemOperationType cosmosItemOperationType) {
switch (cosmosItemOperationType) {
case CREATE:
return CosmosItemOperationType.CREATE;
case DELETE:
return CosmosItemOperationType.DELETE;
case PATCH:
return CosmosItemOperationType.PATCH;
case READ:
return CosmosItemOperationType.READ;
case UPSERT:
return CosmosItemOperationType.UPSERT;
case REPLACE:
return CosmosItemOperationType.REPLACE;
default:
throw new UnsupportedOperationException("CosmosOperationType : " + cosmosItemOperationType + " is not supported");
}
}
// This is only temporary, and will be removed once we delete CosmosItemOperation
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static CosmosItemOperation toDeprecatedCosmosItemOperation(com.azure.cosmos.models.CosmosItemOperation cosmosItemOperation) {
return new CosmosItemOperation() {
@Override
public String getId() {
return cosmosItemOperation.getId();
}
@Override
public PartitionKey getPartitionKeyValue() {
return cosmosItemOperation.getPartitionKeyValue();
}
@Override
public com.azure.cosmos.CosmosItemOperationType getOperationType() {
return toDeprecatedCosmosItemOperationType(cosmosItemOperation.getOperationType());
}
@Override
public T getItem() {
return cosmosItemOperation.getItem();
}
@Override
public T getContext() {
return cosmosItemOperation.getContext();
}
};
}
// This is only temporary, and will be removed once we delete CosmosBulkItemResponse
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static CosmosBulkItemResponse toDeprecatedCosmosBulkItemResponse(com.azure.cosmos.models.CosmosBulkItemResponse cosmosBulkItemResponse) {
return new CosmosBulkItemResponse(cosmosBulkItemResponse.getETag(),
cosmosBulkItemResponse.getRequestCharge(),
ImplementationBridgeHelpers
.CosmosBulkItemResponseHelper
.getCosmosBulkItemResponseAccessor()
.getResourceObject(cosmosBulkItemResponse),
cosmosBulkItemResponse.getStatusCode(),
cosmosBulkItemResponse.getRetryAfterDuration(),
cosmosBulkItemResponse.getSubStatusCode(),
cosmosBulkItemResponse.getResponseHeaders(),
cosmosBulkItemResponse.getCosmosDiagnostics());
}
// This is only temporary, and will be removed once we delete CosmosBulkOperationResponse
@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static CosmosBulkOperationResponse toDeprecatedCosmosBulkOperationResponse(com.azure.cosmos.models.CosmosBulkOperationResponse cosmosBulkOperationResponse) {
return new CosmosBulkOperationResponse(toDeprecatedCosmosItemOperation(cosmosBulkOperationResponse.getOperation()),
toDeprecatedCosmosBulkItemResponse(cosmosBulkOperationResponse.getResponse()),
cosmosBulkOperationResponse.getException(),
cosmosBulkOperationResponse.getBatchContext());
}
}