in sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/PathsHelper.java [122:300]
private static String generatePath(ResourceType resourceType, String ownerOrResourceId, boolean isFeed, OperationType operationType) {
if (isFeed && (ownerOrResourceId == null || ownerOrResourceId.isEmpty()) &&
resourceType != ResourceType.Database &&
resourceType != ResourceType.Offer &&
resourceType != ResourceType.MasterPartition &&
resourceType != ResourceType.ServerPartition &&
resourceType != ResourceType.DatabaseAccount &&
resourceType != ResourceType.Topology) {
throw new IllegalStateException("INVALID resource type");
}
if(ownerOrResourceId == null) {
ownerOrResourceId = StringUtils.EMPTY;
}
if (isFeed && resourceType == ResourceType.Database) {
return Paths.DATABASES_PATH_SEGMENT;
} else if (resourceType == ResourceType.Database) {
return Paths.DATABASES_PATH_SEGMENT + "/" + ownerOrResourceId;
} else if (isFeed && resourceType == ResourceType.DocumentCollection) {
ResourceId documentCollectionId = ResourceId.parse(ownerOrResourceId);
return Paths.DATABASES_PATH_SEGMENT + "/" + documentCollectionId.getDatabaseId().toString() + "/" +
Paths.COLLECTIONS_PATH_SEGMENT;
} else if (resourceType == ResourceType.DocumentCollection) {
ResourceId documentCollectionId = ResourceId.parse(ownerOrResourceId);
return Paths.DATABASES_PATH_SEGMENT + "/" + documentCollectionId.getDatabaseId().toString() + "/" +
Paths.COLLECTIONS_PATH_SEGMENT + "/" + documentCollectionId.getDocumentCollectionId().toString();
} else if (isFeed && resourceType == ResourceType.Offer) {
return Paths.OFFERS_PATH_SEGMENT;
} else if (resourceType == ResourceType.Offer) {
return Paths.OFFERS_PATH_SEGMENT + "/" + ownerOrResourceId;
} else if (isFeed && resourceType == ResourceType.StoredProcedure) {
ResourceId documentCollectionId = ResourceId.parse(ownerOrResourceId);
return
Paths.DATABASES_PATH_SEGMENT + "/" + documentCollectionId.getDatabaseId().toString() + "/" +
Paths.COLLECTIONS_PATH_SEGMENT + "/" + documentCollectionId.getDocumentCollectionId().toString() + "/" +
Paths.STORED_PROCEDURES_PATH_SEGMENT;
} else if (resourceType == ResourceType.StoredProcedure) {
ResourceId storedProcedureId = ResourceId.parse(ownerOrResourceId);
return Paths.DATABASES_PATH_SEGMENT + "/" + storedProcedureId.getDatabaseId().toString() + "/" +
Paths.COLLECTIONS_PATH_SEGMENT + "/" + storedProcedureId.getDocumentCollectionId().toString() + "/" +
Paths.STORED_PROCEDURES_PATH_SEGMENT + "/" + storedProcedureId.getStoredProcedureId().toString();
} else if (isFeed && resourceType == ResourceType.UserDefinedFunction) {
ResourceId documentCollectionId = ResourceId.parse(ownerOrResourceId);
return
Paths.DATABASES_PATH_SEGMENT + "/" + documentCollectionId.getDatabaseId().toString() + "/" +
Paths.COLLECTIONS_PATH_SEGMENT + "/" + documentCollectionId.getDocumentCollectionId().toString() + "/" +
Paths.USER_DEFINED_FUNCTIONS_PATH_SEGMENT;
} else if (resourceType == ResourceType.UserDefinedFunction) {
ResourceId functionId = ResourceId.parse(ownerOrResourceId);
return Paths.DATABASES_PATH_SEGMENT + "/" + functionId.getDatabaseId().toString() + "/" +
Paths.COLLECTIONS_PATH_SEGMENT + "/" + functionId.getDocumentCollectionId().toString() + "/" +
Paths.USER_DEFINED_FUNCTIONS_PATH_SEGMENT + "/" + functionId.getUserDefinedFunctionId().toString();
} else if (isFeed && resourceType == ResourceType.Trigger) {
ResourceId documentCollectionId = ResourceId.parse(ownerOrResourceId);
return
Paths.DATABASES_PATH_SEGMENT + "/" + documentCollectionId.getDatabaseId().toString() + "/" +
Paths.COLLECTIONS_PATH_SEGMENT + "/" + documentCollectionId.getDocumentCollectionId().toString() + "/" +
Paths.TRIGGERS_PATH_SEGMENT;
} else if (resourceType == ResourceType.Trigger) {
ResourceId triggerId = ResourceId.parse(ownerOrResourceId);
return Paths.DATABASES_PATH_SEGMENT + "/" + triggerId.getDatabaseId().toString() + "/" +
Paths.COLLECTIONS_PATH_SEGMENT + "/" + triggerId.getDocumentCollectionId().toString() + "/" +
Paths.TRIGGERS_PATH_SEGMENT + "/" + triggerId.getTriggerId().toString();
} else if (isFeed && resourceType == ResourceType.Conflict) {
ResourceId documentCollectionId = ResourceId.parse(ownerOrResourceId);
return
Paths.DATABASES_PATH_SEGMENT + "/" + documentCollectionId.getDatabaseId().toString() + "/" +
Paths.COLLECTIONS_PATH_SEGMENT + "/" + documentCollectionId.getDocumentCollectionId().toString() + "/" +
Paths.CONFLICTS_PATH_SEGMENT;
} else if (resourceType == ResourceType.Conflict) {
ResourceId conflictId = ResourceId.parse(ownerOrResourceId);
return Paths.DATABASES_PATH_SEGMENT + "/" + conflictId.getDatabaseId().toString() + "/" +
Paths.COLLECTIONS_PATH_SEGMENT + "/" + conflictId.getDocumentCollectionId().toString() + "/" +
Paths.CONFLICTS_PATH_SEGMENT + "/" + conflictId.getConflictId().toString();
} else if (isFeed && resourceType == ResourceType.PartitionKeyRange) {
ResourceId documentCollectionId = ResourceId.parse(ownerOrResourceId);
return Paths.DATABASES_PATH_SEGMENT + "/" + documentCollectionId.getDatabaseId().toString() + "/" +
Paths.COLLECTIONS_PATH_SEGMENT + "/" +
documentCollectionId.getDocumentCollectionId().toString() + "/" +
Paths.PARTITION_KEY_RANGES_PATH_SEGMENT;
} else if (resourceType == ResourceType.PartitionKeyRange) {
ResourceId partitionKeyRangeId = ResourceId.parse(ownerOrResourceId);
return Paths.DATABASES_PATH_SEGMENT + "/" + partitionKeyRangeId.getDatabaseId().toString() + "/" +
Paths.COLLECTIONS_PATH_SEGMENT + "/" + partitionKeyRangeId.getDocumentCollectionId().toString() + "/" +
Paths.PARTITION_KEY_RANGES_PATH_SEGMENT + "/" + partitionKeyRangeId.getPartitionKeyRangeId().toString();
} else if (isFeed && resourceType == ResourceType.Attachment) {
ResourceId documentCollectionId = ResourceId.parse(ownerOrResourceId);
return
Paths.DATABASES_PATH_SEGMENT + "/" + documentCollectionId.getDatabaseId().toString() + "/" +
Paths.COLLECTIONS_PATH_SEGMENT + "/" + documentCollectionId.getDocumentCollectionId().toString() + "/" +
Paths.DOCUMENTS_PATH_SEGMENT + "/" + documentCollectionId.getDocumentId().toString() + "/" +
Paths.ATTACHMENTS_PATH_SEGMENT;
} else if (resourceType == ResourceType.Attachment) {
ResourceId attachmentId = ResourceId.parse(ownerOrResourceId);
return Paths.DATABASES_PATH_SEGMENT + "/" + attachmentId.getDatabaseId().toString() + "/" +
Paths.COLLECTIONS_PATH_SEGMENT + "/" + attachmentId.getDocumentCollectionId().toString() + "/" +
Paths.DOCUMENTS_PATH_SEGMENT + "/" + attachmentId.getDocumentId().toString() + "/" +
Paths.ATTACHMENTS_PATH_SEGMENT + "/" + attachmentId.getAttachmentId().toString();
} else if (isFeed && resourceType == ResourceType.User) {
return
Paths.DATABASES_PATH_SEGMENT + "/" + ownerOrResourceId + "/" +
Paths.USERS_PATH_SEGMENT;
} else if (resourceType == ResourceType.User) {
ResourceId userId = ResourceId.parse(ownerOrResourceId);
return Paths.DATABASES_PATH_SEGMENT + "/" + userId.getDatabaseId().toString() + "/" +
Paths.USERS_PATH_SEGMENT + "/" + userId.getUserId().toString();
} else if (isFeed && resourceType == ResourceType.Permission) {
ResourceId userId = ResourceId.parse(ownerOrResourceId);
return
Paths.DATABASES_PATH_SEGMENT + "/" + userId.getDatabaseId().toString() + "/" +
Paths.USERS_PATH_SEGMENT + "/" + userId.getUserId().toString() + "/" +
Paths.PERMISSIONS_PATH_SEGMENT;
} else if (resourceType == ResourceType.Permission) {
ResourceId permissionId = ResourceId.parse(ownerOrResourceId);
return Paths.DATABASES_PATH_SEGMENT + "/" + permissionId.getDatabaseId().toString() + "/" +
Paths.USERS_PATH_SEGMENT + "/" + permissionId.getUserId().toString() + "/" +
Paths.PERMISSIONS_PATH_SEGMENT + "/" + permissionId.getPermissionId().toString();
} else if (isFeed && resourceType == ResourceType.Document) {
ResourceId documentCollectionId = ResourceId.parse(ownerOrResourceId);
return
Paths.DATABASES_PATH_SEGMENT + "/" + documentCollectionId.getDatabaseId().toString() + "/" +
Paths.COLLECTIONS_PATH_SEGMENT + "/" + documentCollectionId.getDocumentCollectionId().toString() + "/" +
Paths.DOCUMENTS_PATH_SEGMENT;
} else if (resourceType == ResourceType.Document) {
ResourceId documentId = ResourceId.parse(ownerOrResourceId);
return Paths.DATABASES_PATH_SEGMENT + "/" + documentId.getDatabaseId().toString() + "/" +
Paths.COLLECTIONS_PATH_SEGMENT + "/" + documentId.getDocumentCollectionId().toString() + "/" +
Paths.DOCUMENTS_PATH_SEGMENT + "/" + documentId.getDocumentId().toString();
} else if (isFeed && resourceType == ResourceType.MasterPartition) {
return Paths.PARTITIONS_PATH_SEGMENT;
} else if (resourceType == ResourceType.MasterPartition) {
return Paths.PARTITIONS_PATH_SEGMENT + "/" + ownerOrResourceId;
} else if (isFeed && resourceType == ResourceType.ServerPartition) {
return Paths.PARTITIONS_PATH_SEGMENT;
} else if (resourceType == ResourceType.ServerPartition) {
return Paths.PARTITIONS_PATH_SEGMENT + "/" + ownerOrResourceId;
} else if (isFeed && resourceType == ResourceType.Topology) {
return Paths.TOPOLOGY_PATH_SEGMENT;
} else if (resourceType == ResourceType.Topology) {
return Paths.TOPOLOGY_PATH_SEGMENT + "/" + ownerOrResourceId;
} else if (isFeed && resourceType == ResourceType.DatabaseAccount) {
return Paths.DATABASE_ACCOUNT_PATH_SEGMENT;
} else if (resourceType == ResourceType.DatabaseAccount) {
return Paths.DATABASE_ACCOUNT_PATH_SEGMENT + "/" + ownerOrResourceId;
} else if (resourceType == ResourceType.ClientEncryptionKey) {
ResourceId clientEncryptionKeyId = ResourceId.parse(ownerOrResourceId);
return Paths.DATABASES_PATH_SEGMENT + "/" + clientEncryptionKeyId.getDatabaseId().toString() + "/" +
Paths.CLIENT_ENCRYPTION_KEY_PATH_SEGMENT + "/" + clientEncryptionKeyId.getClientEncryptionKeyId().toString();
} else if (resourceType == ResourceType.PartitionKey && operationType == OperationType.Delete) {
ResourceId documentCollectionId = ResourceId.parse(ownerOrResourceId);
return Paths.DATABASES_PATH_SEGMENT + "/" + documentCollectionId.getDatabaseId().toString() + "/" +
Paths.COLLECTIONS_PATH_SEGMENT + "/" + documentCollectionId.getDocumentCollectionId().toString() + "/" +
Paths.OPERATIONS_PATH_SEGMENT + "/" + Paths.PARTITION_KEY_DELETE_PATH_SEGMENT;
}
String errorMessage = "invalid resource type";
throw new IllegalStateException(errorMessage);
}