From a1787c2dba7323d3b1463208b3a5e84a053aaaf6 Mon Sep 17 00:00:00 2001 From: Aliaksandr Stsiapanay Date: Fri, 25 Oct 2024 17:17:48 +0300 Subject: [PATCH] chore: make module resource-service (#548) --- build.gradle | 26 ++++++++++++ config/build.gradle | 21 ---------- server/build.gradle | 22 +--------- .../com/epam/aidial/core/server/AiDial.java | 22 ++++++---- .../com/epam/aidial/core/server/Proxy.java | 10 ++--- .../epam/aidial/core/server/ProxyContext.java | 4 +- .../AccessControlBaseController.java | 8 ++-- .../server/controller/AddonController.java | 2 +- .../controller/ApplicationController.java | 8 ++-- .../controller/AssistantController.java | 2 +- .../server/controller/BucketController.java | 6 +-- .../server/controller/ControllerSelector.java | 2 +- .../controller/DeleteFileController.java | 10 ++--- .../controller/DeploymentController.java | 8 ++-- .../DeploymentFeatureController.java | 2 +- .../controller/DeploymentPostController.java | 4 +- .../controller/DownloadFileController.java | 4 +- .../controller/FileMetadataController.java | 8 ++-- .../controller/InterceptorController.java | 2 +- .../controller/InvitationController.java | 6 +-- .../server/controller/LimitController.java | 2 +- .../server/controller/ModelController.java | 2 +- .../controller/NotificationController.java | 4 +- .../controller/PublicationController.java | 12 +++--- .../server/controller/ResourceController.java | 18 ++++---- .../ResourceOperationController.java | 19 +++++---- .../server/controller/RouteController.java | 2 +- .../server/controller/ShareController.java | 12 +++--- .../controller/UploadFileController.java | 10 ++--- .../server/controller/UserInfoController.java | 2 +- .../core/server/data/AutoSharedData.java | 2 + .../core/server/data/ResourceTypes.java | 2 +- .../aidial/core/server/data/ResourceUrl.java | 4 +- .../core/server/data/SharedByMeDto.java | 1 + .../core/server/data/SharedResource.java | 2 + .../core/server/data/SharedResources.java | 1 + .../server/data/SharedResourcesResponse.java | 1 + .../core/server/function/BaseFunction.java | 6 +-- .../function/CollectRequestAttachmentsFn.java | 8 ++-- .../CollectResponseAttachmentsFn.java | 6 +-- .../ApplyDefaultDeploymentSettingsFn.java | 2 +- .../EnhanceAssistantRequestFn.java | 4 +- .../enhancement/EnhanceModelRequestFn.java | 2 +- .../core/server/limiter/RateLimitResult.java | 2 +- .../core/server/limiter/RateLimiter.java | 12 +++--- .../core/server/limiter/RequestRateLimit.java | 2 +- .../core/server/limiter/TokenRateLimit.java | 2 +- .../core/server/security/AccessService.java | 12 +++--- .../core/server/security/ApiKeyStore.java | 16 +++---- .../service/ApplicationOperatorService.java | 4 +- .../server/service/ApplicationService.java | 24 ++++++----- .../server/service/InvitationService.java | 7 ++-- .../server/service/NotificationService.java | 5 ++- .../server/service/PublicationService.java | 20 +++++---- .../core/server/service/PublicationUtil.java | 4 +- .../service/ResourceOperationService.java | 14 ++++--- .../core/server/service/RuleService.java | 11 ++--- .../core/server/service/ShareService.java | 15 +++---- .../server/service/VertxTimerService.java | 1 + .../core/server/token/TokenStatsTracker.java | 10 ++--- .../core/server/upstream/UpstreamRoute.java | 2 +- .../core/server/upstream/UpstreamState.java | 2 +- .../aidial/core/server/util/ProxyUtil.java | 3 +- .../ResourceDescriptorFactory.java | 7 +++- .../server/vertx/stream/BlobWriteStream.java | 14 +++---- .../epam/aidial/core/server/FileApiTest.java | 5 +-- .../aidial/core/server/InvitationApiTest.java | 2 +- .../epam/aidial/core/server/ProxyTest.java | 16 +++---- .../core/server/TestServerStatus429.java | 2 +- .../controller/AssistantControllerTest.java | 2 +- .../controller/BucketControllerTest.java | 2 +- .../DeploymentPostControllerTest.java | 10 ++--- .../core/server/limiter/RateLimiterTest.java | 12 +++--- .../core/server/security/ApiKeyStoreTest.java | 11 +++-- .../server/service/PublicationUtilTest.java | 4 +- .../server/token/TokenStatsTrackerTest.java | 8 ++-- .../server/upstream/LoadBalancerTest.java | 2 +- .../server/upstream/UpstreamRouteTest.java | 2 +- .../core/server/util/ProxyUtilTest.java | 2 +- .../ResourceDescriptorFactoryTest.java | 39 ++++++++--------- settings.gradle | 1 + storage/.gitignore | 42 +++++++++++++++++++ storage/build.gradle | 36 ++++++++++++++++ .../core/storage/blobstore}/BlobStorage.java | 8 ++-- .../storage/blobstore}/BlobStorageUtil.java | 4 +- .../core/storage/blobstore}/Storage.java | 2 +- .../storage/blobstore}/StorageProvider.java | 2 +- .../credential/AwsCredentialProvider.java | 2 +- .../credential/AzureCredentialProvider.java | 2 +- .../credential/CredentialProvider.java | 2 +- .../credential/CredentialProviderFactory.java | 4 +- .../credential/DefaultCredentialProvider.java | 2 +- .../credential/GcpCredentialProvider.java | 2 +- .../cache/AwsCredentialsResolver.java | 2 +- .../storage}/cache/CacheClientFactory.java | 21 +++++----- .../core/storage}/cache/CacheProvider.java | 2 +- .../storage}/cache/IamAuthTokenRequest.java | 2 +- .../storage}/cache/RedisConfigSupport.java | 2 +- .../core/storage}/data/FileMetadata.java | 10 +---- .../core/storage}/data/MetadataBase.java | 4 +- .../aidial/core/storage}/data/NodeType.java | 2 +- .../storage}/data/ResourceAccessType.java | 2 +- .../core/storage}/data/ResourceEvent.java | 2 +- .../storage}/data/ResourceFolderMetadata.java | 8 ++-- .../storage}/data/ResourceItemMetadata.java | 6 +-- .../core/storage/http}/HttpException.java | 2 +- .../aidial/core/storage/http}/HttpStatus.java | 2 +- .../storage}/resource/ResourceDescriptor.java | 4 +- .../core/storage}/resource/ResourceType.java | 2 +- .../core/storage}/resource/ResourceUtil.java | 2 +- .../core/storage}/service/LockService.java | 4 +- .../storage}/service/ResourceService.java | 34 +++++++-------- .../core/storage}/service/ResourceTopic.java | 9 ++-- .../core/storage}/service/TimerService.java | 2 +- .../core/storage}/util/Compression.java | 2 +- .../core/storage}/util/EtagBuilder.java | 2 +- .../aidial/core/storage}/util/EtagHeader.java | 4 +- .../aidial/core/storage}/util/RedisUtil.java | 2 +- .../aidial/core/storage}/util/UrlUtil.java | 4 +- .../storage}/service/LockServiceTest.java | 2 +- .../core/storage}/util/CompressionTest.java | 2 +- .../core/storage}/util/EtagHeaderTest.java | 3 +- .../core/storage}/util/UrlUtilTest.java | 2 +- 123 files changed, 477 insertions(+), 388 deletions(-) rename server/src/main/java/com/epam/aidial/core/server/{resource => util}/ResourceDescriptorFactory.java (96%) rename server/src/test/java/com/epam/aidial/core/server/{resource => util}/ResourceDescriptorFactoryTest.java (90%) create mode 100644 storage/.gitignore create mode 100644 storage/build.gradle rename {server/src/main/java/com/epam/aidial/core/server/storage => storage/src/main/java/com/epam/aidial/core/storage/blobstore}/BlobStorage.java (97%) rename {server/src/main/java/com/epam/aidial/core/server/storage => storage/src/main/java/com/epam/aidial/core/storage/blobstore}/BlobStorageUtil.java (85%) rename {server/src/main/java/com/epam/aidial/core/server/storage => storage/src/main/java/com/epam/aidial/core/storage/blobstore}/Storage.java (96%) rename {server/src/main/java/com/epam/aidial/core/server/storage => storage/src/main/java/com/epam/aidial/core/storage/blobstore}/StorageProvider.java (91%) rename {server/src/main/java/com/epam/aidial/core/server/storage => storage/src/main/java/com/epam/aidial/core/storage/blobstore}/credential/AwsCredentialProvider.java (96%) rename {server/src/main/java/com/epam/aidial/core/server/storage => storage/src/main/java/com/epam/aidial/core/storage/blobstore}/credential/AzureCredentialProvider.java (96%) rename {server/src/main/java/com/epam/aidial/core/server/storage => storage/src/main/java/com/epam/aidial/core/storage/blobstore}/credential/CredentialProvider.java (66%) rename {server/src/main/java/com/epam/aidial/core/server/storage => storage/src/main/java/com/epam/aidial/core/storage/blobstore}/credential/CredentialProviderFactory.java (85%) rename {server/src/main/java/com/epam/aidial/core/server/storage => storage/src/main/java/com/epam/aidial/core/storage/blobstore}/credential/DefaultCredentialProvider.java (88%) rename {server/src/main/java/com/epam/aidial/core/server/storage => storage/src/main/java/com/epam/aidial/core/storage/blobstore}/credential/GcpCredentialProvider.java (97%) rename {server/src/main/java/com/epam/aidial/core/server => storage/src/main/java/com/epam/aidial/core/storage}/cache/AwsCredentialsResolver.java (97%) rename {server/src/main/java/com/epam/aidial/core/server => storage/src/main/java/com/epam/aidial/core/storage}/cache/CacheClientFactory.java (77%) rename {server/src/main/java/com/epam/aidial/core/server => storage/src/main/java/com/epam/aidial/core/storage}/cache/CacheProvider.java (87%) rename {server/src/main/java/com/epam/aidial/core/server => storage/src/main/java/com/epam/aidial/core/storage}/cache/IamAuthTokenRequest.java (98%) rename {server/src/main/java/com/epam/aidial/core/server => storage/src/main/java/com/epam/aidial/core/storage}/cache/RedisConfigSupport.java (87%) rename {server/src/main/java/com/epam/aidial/core/server => storage/src/main/java/com/epam/aidial/core/storage}/data/FileMetadata.java (53%) rename {server/src/main/java/com/epam/aidial/core/server => storage/src/main/java/com/epam/aidial/core/storage}/data/MetadataBase.java (86%) rename {server/src/main/java/com/epam/aidial/core/server => storage/src/main/java/com/epam/aidial/core/storage}/data/NodeType.java (50%) rename {server/src/main/java/com/epam/aidial/core/server => storage/src/main/java/com/epam/aidial/core/storage}/data/ResourceAccessType.java (90%) rename {server/src/main/java/com/epam/aidial/core/server => storage/src/main/java/com/epam/aidial/core/storage}/data/ResourceEvent.java (89%) rename {server/src/main/java/com/epam/aidial/core/server => storage/src/main/java/com/epam/aidial/core/storage}/data/ResourceFolderMetadata.java (80%) rename {server/src/main/java/com/epam/aidial/core/server => storage/src/main/java/com/epam/aidial/core/storage}/data/ResourceItemMetadata.java (84%) rename {server/src/main/java/com/epam/aidial/core/server/util => storage/src/main/java/com/epam/aidial/core/storage/http}/HttpException.java (85%) rename {server/src/main/java/com/epam/aidial/core/server/util => storage/src/main/java/com/epam/aidial/core/storage/http}/HttpStatus.java (97%) rename {server/src/main/java/com/epam/aidial/core/server => storage/src/main/java/com/epam/aidial/core/storage}/resource/ResourceDescriptor.java (98%) rename {server/src/main/java/com/epam/aidial/core/server => storage/src/main/java/com/epam/aidial/core/storage}/resource/ResourceType.java (70%) rename {server/src/main/java/com/epam/aidial/core/server => storage/src/main/java/com/epam/aidial/core/storage}/resource/ResourceUtil.java (81%) rename {server/src/main/java/com/epam/aidial/core/server => storage/src/main/java/com/epam/aidial/core/storage}/service/LockService.java (97%) rename {server/src/main/java/com/epam/aidial/core/server => storage/src/main/java/com/epam/aidial/core/storage}/service/ResourceService.java (97%) rename {server/src/main/java/com/epam/aidial/core/server => storage/src/main/java/com/epam/aidial/core/storage}/service/ResourceTopic.java (90%) rename {server/src/main/java/com/epam/aidial/core/server => storage/src/main/java/com/epam/aidial/core/storage}/service/TimerService.java (95%) rename {server/src/main/java/com/epam/aidial/core/server => storage/src/main/java/com/epam/aidial/core/storage}/util/Compression.java (97%) rename {server/src/main/java/com/epam/aidial/core/server => storage/src/main/java/com/epam/aidial/core/storage}/util/EtagBuilder.java (95%) rename {server/src/main/java/com/epam/aidial/core/server => storage/src/main/java/com/epam/aidial/core/storage}/util/EtagHeader.java (93%) rename {server/src/main/java/com/epam/aidial/core/server => storage/src/main/java/com/epam/aidial/core/storage}/util/RedisUtil.java (98%) rename {server/src/main/java/com/epam/aidial/core/server => storage/src/main/java/com/epam/aidial/core/storage}/util/UrlUtil.java (95%) rename {server/src/test/java/com/epam/aidial/core/server => storage/src/test/java/com/epam/aidial/core/storage}/service/LockServiceTest.java (97%) rename {server/src/test/java/com/epam/aidial/core/server => storage/src/test/java/com/epam/aidial/core/storage}/util/CompressionTest.java (96%) rename {server/src/test/java/com/epam/aidial/core/server => storage/src/test/java/com/epam/aidial/core/storage}/util/EtagHeaderTest.java (92%) rename {server/src/test/java/com/epam/aidial/core/server => storage/src/test/java/com/epam/aidial/core/storage}/util/UrlUtilTest.java (98%) diff --git a/build.gradle b/build.gradle index 608dfcee9..2583d640c 100644 --- a/build.gradle +++ b/build.gradle @@ -1,4 +1,30 @@ +plugins { + id "java" + id 'checkstyle' + id 'application' + id 'io.freefair.lombok' version '8.0.1' +} + allprojects { group = 'com.epam.aidial' version = "0.18.0-rc" + + apply plugin: 'java' + apply plugin: 'checkstyle' + apply plugin: 'application' + apply plugin: 'io.freefair.lombok' + + java { + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } + } + + checkstyle { + configDirectory = file("$rootProject.projectDir/checkstyle") + } + + repositories { + mavenCentral() + } } \ No newline at end of file diff --git a/config/build.gradle b/config/build.gradle index 92914fb25..bef547210 100644 --- a/config/build.gradle +++ b/config/build.gradle @@ -1,24 +1,3 @@ -plugins { - id "java" - id 'checkstyle' - id 'application' - id 'io.freefair.lombok' version '8.0.1' -} - -java { - toolchain { - languageVersion = JavaLanguageVersion.of(17) - } -} - -checkstyle { - configDirectory = file("$rootProject.projectDir/checkstyle") -} - -repositories { - mavenCentral() -} - dependencies { implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.2' testImplementation platform('org.junit:junit-bom:5.9.1') diff --git a/server/build.gradle b/server/build.gradle index 292ad0bfd..213f55261 100644 --- a/server/build.gradle +++ b/server/build.gradle @@ -1,24 +1,3 @@ -plugins { - id "java" - id 'checkstyle' - id 'application' - id 'io.freefair.lombok' version '8.0.1' -} - -java { - toolchain { - languageVersion = JavaLanguageVersion.of(17) - } -} - -checkstyle { - configDirectory = file("$rootProject.projectDir/checkstyle") -} - -repositories { - mavenCentral() -} - configurations.all { resolutionStrategy { force 'com.google.code.gson:gson:2.8.9' @@ -27,6 +6,7 @@ configurations.all { dependencies { implementation project(':config') + implementation project(':storage') implementation 'com.google.protobuf:protobuf-java:3.25.5' implementation 'org.slf4j:slf4j-api:1.7.32' diff --git a/server/src/main/java/com/epam/aidial/core/server/AiDial.java b/server/src/main/java/com/epam/aidial/core/server/AiDial.java index f311b8c5a..70fcac77f 100644 --- a/server/src/main/java/com/epam/aidial/core/server/AiDial.java +++ b/server/src/main/java/com/epam/aidial/core/server/AiDial.java @@ -1,6 +1,5 @@ package com.epam.aidial.core.server; -import com.epam.aidial.core.server.cache.CacheClientFactory; import com.epam.aidial.core.server.config.ConfigStore; import com.epam.aidial.core.server.config.FileConfigStore; import com.epam.aidial.core.server.limiter.RateLimiter; @@ -13,19 +12,22 @@ import com.epam.aidial.core.server.service.ApplicationService; import com.epam.aidial.core.server.service.HeartbeatService; import com.epam.aidial.core.server.service.InvitationService; -import com.epam.aidial.core.server.service.LockService; import com.epam.aidial.core.server.service.NotificationService; import com.epam.aidial.core.server.service.PublicationService; import com.epam.aidial.core.server.service.ResourceOperationService; -import com.epam.aidial.core.server.service.ResourceService; import com.epam.aidial.core.server.service.RuleService; import com.epam.aidial.core.server.service.ShareService; -import com.epam.aidial.core.server.service.TimerService; import com.epam.aidial.core.server.service.VertxTimerService; -import com.epam.aidial.core.server.storage.BlobStorage; -import com.epam.aidial.core.server.storage.Storage; import com.epam.aidial.core.server.token.TokenStatsTracker; import com.epam.aidial.core.server.upstream.UpstreamRouteProvider; +import com.epam.aidial.core.server.util.ProxyUtil; +import com.epam.aidial.core.storage.blobstore.BlobStorage; +import com.epam.aidial.core.storage.blobstore.Storage; +import com.epam.aidial.core.storage.cache.CacheClientFactory; +import com.epam.aidial.core.storage.service.LockService; +import com.epam.aidial.core.storage.service.ResourceService; +import com.epam.aidial.core.storage.service.TimerService; +import com.fasterxml.jackson.databind.JsonNode; import com.google.common.annotations.VisibleForTesting; import io.micrometer.core.instrument.Clock; import io.micrometer.registry.otlp.OtlpMeterRegistry; @@ -46,6 +48,7 @@ import io.vertx.tracing.opentelemetry.OpenTelemetryOptions; import lombok.Getter; import lombok.Setter; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.redisson.api.RedissonClient; @@ -108,7 +111,7 @@ void start() throws Exception { } EncryptionService encryptionService = new EncryptionService(settings("encryption")); - redis = CacheClientFactory.create(settings("redis")); + redis = CacheClientFactory.create(toJsonNode(settings("redis"))); LockService lockService = new LockService(redis, storage.getPrefix()); TimerService timerService = new VertxTimerService(vertx); @@ -165,6 +168,11 @@ void stop() throws Exception { } } + @SneakyThrows + private static JsonNode toJsonNode(JsonObject jsonObject) { + return ProxyUtil.MAPPER.readTree(jsonObject.encode()); + } + public static JsonObject settings() throws Exception { return defaultSettings() .mergeIn(fileSettings(), true) diff --git a/server/src/main/java/com/epam/aidial/core/server/Proxy.java b/server/src/main/java/com/epam/aidial/core/server/Proxy.java index 76d70eecc..dc776ee1b 100644 --- a/server/src/main/java/com/epam/aidial/core/server/Proxy.java +++ b/server/src/main/java/com/epam/aidial/core/server/Proxy.java @@ -15,19 +15,19 @@ import com.epam.aidial.core.server.service.ApplicationService; import com.epam.aidial.core.server.service.HeartbeatService; import com.epam.aidial.core.server.service.InvitationService; -import com.epam.aidial.core.server.service.LockService; import com.epam.aidial.core.server.service.NotificationService; import com.epam.aidial.core.server.service.PublicationService; import com.epam.aidial.core.server.service.ResourceOperationService; -import com.epam.aidial.core.server.service.ResourceService; import com.epam.aidial.core.server.service.RuleService; import com.epam.aidial.core.server.service.ShareService; -import com.epam.aidial.core.server.storage.BlobStorage; import com.epam.aidial.core.server.token.TokenStatsTracker; import com.epam.aidial.core.server.upstream.UpstreamRouteProvider; -import com.epam.aidial.core.server.util.HttpException; -import com.epam.aidial.core.server.util.HttpStatus; import com.epam.aidial.core.server.util.ProxyUtil; +import com.epam.aidial.core.storage.blobstore.BlobStorage; +import com.epam.aidial.core.storage.http.HttpException; +import com.epam.aidial.core.storage.http.HttpStatus; +import com.epam.aidial.core.storage.service.LockService; +import com.epam.aidial.core.storage.service.ResourceService; import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.SpanContext; import io.vertx.core.Future; diff --git a/server/src/main/java/com/epam/aidial/core/server/ProxyContext.java b/server/src/main/java/com/epam/aidial/core/server/ProxyContext.java index 56fc5cd61..9ae39bdbd 100644 --- a/server/src/main/java/com/epam/aidial/core/server/ProxyContext.java +++ b/server/src/main/java/com/epam/aidial/core/server/ProxyContext.java @@ -7,10 +7,10 @@ import com.epam.aidial.core.server.security.ExtractedClaims; import com.epam.aidial.core.server.token.TokenUsage; import com.epam.aidial.core.server.upstream.UpstreamRoute; -import com.epam.aidial.core.server.util.HttpException; -import com.epam.aidial.core.server.util.HttpStatus; import com.epam.aidial.core.server.util.ProxyUtil; import com.epam.aidial.core.server.vertx.stream.BufferingReadStream; +import com.epam.aidial.core.storage.http.HttpException; +import com.epam.aidial.core.storage.http.HttpStatus; import io.vertx.core.Future; import io.vertx.core.buffer.Buffer; import io.vertx.core.http.HttpClientRequest; diff --git a/server/src/main/java/com/epam/aidial/core/server/controller/AccessControlBaseController.java b/server/src/main/java/com/epam/aidial/core/server/controller/AccessControlBaseController.java index 8b5da720d..bb4db3a0f 100644 --- a/server/src/main/java/com/epam/aidial/core/server/controller/AccessControlBaseController.java +++ b/server/src/main/java/com/epam/aidial/core/server/controller/AccessControlBaseController.java @@ -2,11 +2,11 @@ import com.epam.aidial.core.server.Proxy; import com.epam.aidial.core.server.ProxyContext; -import com.epam.aidial.core.server.data.ResourceAccessType; -import com.epam.aidial.core.server.resource.ResourceDescriptor; -import com.epam.aidial.core.server.resource.ResourceDescriptorFactory; import com.epam.aidial.core.server.security.AccessService; -import com.epam.aidial.core.server.util.HttpStatus; +import com.epam.aidial.core.server.util.ResourceDescriptorFactory; +import com.epam.aidial.core.storage.data.ResourceAccessType; +import com.epam.aidial.core.storage.http.HttpStatus; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; import io.vertx.core.Future; import lombok.AllArgsConstructor; diff --git a/server/src/main/java/com/epam/aidial/core/server/controller/AddonController.java b/server/src/main/java/com/epam/aidial/core/server/controller/AddonController.java index 367a99cfe..1720d95c3 100644 --- a/server/src/main/java/com/epam/aidial/core/server/controller/AddonController.java +++ b/server/src/main/java/com/epam/aidial/core/server/controller/AddonController.java @@ -5,7 +5,7 @@ import com.epam.aidial.core.server.ProxyContext; import com.epam.aidial.core.server.data.AddonData; import com.epam.aidial.core.server.data.ListData; -import com.epam.aidial.core.server.util.HttpStatus; +import com.epam.aidial.core.storage.http.HttpStatus; import io.vertx.core.Future; import lombok.RequiredArgsConstructor; diff --git a/server/src/main/java/com/epam/aidial/core/server/controller/ApplicationController.java b/server/src/main/java/com/epam/aidial/core/server/controller/ApplicationController.java index 076762781..eb5f7f7cb 100644 --- a/server/src/main/java/com/epam/aidial/core/server/controller/ApplicationController.java +++ b/server/src/main/java/com/epam/aidial/core/server/controller/ApplicationController.java @@ -7,17 +7,17 @@ import com.epam.aidial.core.server.data.ListData; import com.epam.aidial.core.server.data.ResourceLink; import com.epam.aidial.core.server.data.ResourceTypes; -import com.epam.aidial.core.server.resource.ResourceDescriptor; -import com.epam.aidial.core.server.resource.ResourceDescriptorFactory; import com.epam.aidial.core.server.security.AccessService; import com.epam.aidial.core.server.security.EncryptionService; import com.epam.aidial.core.server.service.ApplicationService; import com.epam.aidial.core.server.service.PermissionDeniedException; import com.epam.aidial.core.server.service.ResourceNotFoundException; import com.epam.aidial.core.server.util.BucketBuilder; -import com.epam.aidial.core.server.util.HttpException; -import com.epam.aidial.core.server.util.HttpStatus; import com.epam.aidial.core.server.util.ProxyUtil; +import com.epam.aidial.core.server.util.ResourceDescriptorFactory; +import com.epam.aidial.core.storage.http.HttpException; +import com.epam.aidial.core.storage.http.HttpStatus; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; import io.vertx.core.Future; import io.vertx.core.Vertx; import lombok.extern.slf4j.Slf4j; diff --git a/server/src/main/java/com/epam/aidial/core/server/controller/AssistantController.java b/server/src/main/java/com/epam/aidial/core/server/controller/AssistantController.java index 0d4d67dde..b3bc93270 100644 --- a/server/src/main/java/com/epam/aidial/core/server/controller/AssistantController.java +++ b/server/src/main/java/com/epam/aidial/core/server/controller/AssistantController.java @@ -5,7 +5,7 @@ import com.epam.aidial.core.server.ProxyContext; import com.epam.aidial.core.server.data.AssistantData; import com.epam.aidial.core.server.data.ListData; -import com.epam.aidial.core.server.util.HttpStatus; +import com.epam.aidial.core.storage.http.HttpStatus; import io.vertx.core.Future; import lombok.RequiredArgsConstructor; diff --git a/server/src/main/java/com/epam/aidial/core/server/controller/BucketController.java b/server/src/main/java/com/epam/aidial/core/server/controller/BucketController.java index bd02e229a..b66391aa1 100644 --- a/server/src/main/java/com/epam/aidial/core/server/controller/BucketController.java +++ b/server/src/main/java/com/epam/aidial/core/server/controller/BucketController.java @@ -3,11 +3,11 @@ import com.epam.aidial.core.server.Proxy; import com.epam.aidial.core.server.ProxyContext; import com.epam.aidial.core.server.data.Bucket; -import com.epam.aidial.core.server.resource.ResourceDescriptor; import com.epam.aidial.core.server.security.EncryptionService; import com.epam.aidial.core.server.util.BucketBuilder; -import com.epam.aidial.core.server.util.HttpStatus; -import com.epam.aidial.core.server.util.UrlUtil; +import com.epam.aidial.core.storage.http.HttpStatus; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.util.UrlUtil; import io.vertx.core.Future; import lombok.AllArgsConstructor; diff --git a/server/src/main/java/com/epam/aidial/core/server/controller/ControllerSelector.java b/server/src/main/java/com/epam/aidial/core/server/controller/ControllerSelector.java index 0fad172ef..e303e5e04 100644 --- a/server/src/main/java/com/epam/aidial/core/server/controller/ControllerSelector.java +++ b/server/src/main/java/com/epam/aidial/core/server/controller/ControllerSelector.java @@ -5,7 +5,7 @@ import com.epam.aidial.core.server.Proxy; import com.epam.aidial.core.server.ProxyContext; import com.epam.aidial.core.server.util.SpanUtil; -import com.epam.aidial.core.server.util.UrlUtil; +import com.epam.aidial.core.storage.util.UrlUtil; import io.vertx.core.http.HttpMethod; import lombok.experimental.UtilityClass; diff --git a/server/src/main/java/com/epam/aidial/core/server/controller/DeleteFileController.java b/server/src/main/java/com/epam/aidial/core/server/controller/DeleteFileController.java index 1b2e49eaf..13eedb47b 100644 --- a/server/src/main/java/com/epam/aidial/core/server/controller/DeleteFileController.java +++ b/server/src/main/java/com/epam/aidial/core/server/controller/DeleteFileController.java @@ -2,14 +2,14 @@ import com.epam.aidial.core.server.Proxy; import com.epam.aidial.core.server.ProxyContext; -import com.epam.aidial.core.server.resource.ResourceDescriptor; import com.epam.aidial.core.server.service.InvitationService; -import com.epam.aidial.core.server.service.LockService; -import com.epam.aidial.core.server.service.ResourceService; import com.epam.aidial.core.server.service.ShareService; -import com.epam.aidial.core.server.util.EtagHeader; -import com.epam.aidial.core.server.util.HttpStatus; import com.epam.aidial.core.server.util.ProxyUtil; +import com.epam.aidial.core.storage.http.HttpStatus; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.service.LockService; +import com.epam.aidial.core.storage.service.ResourceService; +import com.epam.aidial.core.storage.util.EtagHeader; import io.vertx.core.Future; import lombok.extern.slf4j.Slf4j; diff --git a/server/src/main/java/com/epam/aidial/core/server/controller/DeploymentController.java b/server/src/main/java/com/epam/aidial/core/server/controller/DeploymentController.java index c05ca9f40..808b6bbc7 100644 --- a/server/src/main/java/com/epam/aidial/core/server/controller/DeploymentController.java +++ b/server/src/main/java/com/epam/aidial/core/server/controller/DeploymentController.java @@ -10,12 +10,12 @@ import com.epam.aidial.core.server.data.FeaturesData; import com.epam.aidial.core.server.data.ListData; import com.epam.aidial.core.server.data.ResourceTypes; -import com.epam.aidial.core.server.resource.ResourceDescriptor; -import com.epam.aidial.core.server.resource.ResourceDescriptorFactory; import com.epam.aidial.core.server.service.PermissionDeniedException; import com.epam.aidial.core.server.service.ResourceNotFoundException; -import com.epam.aidial.core.server.util.HttpStatus; -import com.epam.aidial.core.server.util.UrlUtil; +import com.epam.aidial.core.server.util.ResourceDescriptorFactory; +import com.epam.aidial.core.storage.http.HttpStatus; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.util.UrlUtil; import io.vertx.core.Future; import lombok.RequiredArgsConstructor; diff --git a/server/src/main/java/com/epam/aidial/core/server/controller/DeploymentFeatureController.java b/server/src/main/java/com/epam/aidial/core/server/controller/DeploymentFeatureController.java index 33e35134f..d40cc77ac 100644 --- a/server/src/main/java/com/epam/aidial/core/server/controller/DeploymentFeatureController.java +++ b/server/src/main/java/com/epam/aidial/core/server/controller/DeploymentFeatureController.java @@ -5,9 +5,9 @@ import com.epam.aidial.core.server.ProxyContext; import com.epam.aidial.core.server.service.PermissionDeniedException; import com.epam.aidial.core.server.service.ResourceNotFoundException; -import com.epam.aidial.core.server.util.HttpStatus; import com.epam.aidial.core.server.util.ProxyUtil; import com.epam.aidial.core.server.vertx.stream.BufferingReadStream; +import com.epam.aidial.core.storage.http.HttpStatus; import io.vertx.core.Future; import io.vertx.core.buffer.Buffer; import io.vertx.core.http.HttpClientRequest; diff --git a/server/src/main/java/com/epam/aidial/core/server/controller/DeploymentPostController.java b/server/src/main/java/com/epam/aidial/core/server/controller/DeploymentPostController.java index ad26c290c..4040cf2c0 100644 --- a/server/src/main/java/com/epam/aidial/core/server/controller/DeploymentPostController.java +++ b/server/src/main/java/com/epam/aidial/core/server/controller/DeploymentPostController.java @@ -26,11 +26,11 @@ import com.epam.aidial.core.server.upstream.DeploymentUpstreamProvider; import com.epam.aidial.core.server.upstream.UpstreamProvider; import com.epam.aidial.core.server.upstream.UpstreamRoute; -import com.epam.aidial.core.server.util.HttpException; -import com.epam.aidial.core.server.util.HttpStatus; import com.epam.aidial.core.server.util.ModelCostCalculator; import com.epam.aidial.core.server.util.ProxyUtil; import com.epam.aidial.core.server.vertx.stream.BufferingReadStream; +import com.epam.aidial.core.storage.http.HttpException; +import com.epam.aidial.core.storage.http.HttpStatus; import com.fasterxml.jackson.databind.node.ObjectNode; import com.google.common.annotations.VisibleForTesting; import io.netty.buffer.ByteBufInputStream; diff --git a/server/src/main/java/com/epam/aidial/core/server/controller/DownloadFileController.java b/server/src/main/java/com/epam/aidial/core/server/controller/DownloadFileController.java index 9ab3aca83..d48b38c5d 100644 --- a/server/src/main/java/com/epam/aidial/core/server/controller/DownloadFileController.java +++ b/server/src/main/java/com/epam/aidial/core/server/controller/DownloadFileController.java @@ -2,9 +2,9 @@ import com.epam.aidial.core.server.Proxy; import com.epam.aidial.core.server.ProxyContext; -import com.epam.aidial.core.server.resource.ResourceDescriptor; -import com.epam.aidial.core.server.util.HttpStatus; import com.epam.aidial.core.server.vertx.stream.InputStreamReader; +import com.epam.aidial.core.storage.http.HttpStatus; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; import io.vertx.core.Future; import io.vertx.core.http.HttpHeaders; import io.vertx.core.http.HttpServerResponse; diff --git a/server/src/main/java/com/epam/aidial/core/server/controller/FileMetadataController.java b/server/src/main/java/com/epam/aidial/core/server/controller/FileMetadataController.java index 6c4ffdea1..1f97eda78 100644 --- a/server/src/main/java/com/epam/aidial/core/server/controller/FileMetadataController.java +++ b/server/src/main/java/com/epam/aidial/core/server/controller/FileMetadataController.java @@ -2,11 +2,11 @@ import com.epam.aidial.core.server.Proxy; import com.epam.aidial.core.server.ProxyContext; -import com.epam.aidial.core.server.data.MetadataBase; -import com.epam.aidial.core.server.resource.ResourceDescriptor; import com.epam.aidial.core.server.security.AccessService; -import com.epam.aidial.core.server.service.ResourceService; -import com.epam.aidial.core.server.util.HttpStatus; +import com.epam.aidial.core.storage.data.MetadataBase; +import com.epam.aidial.core.storage.http.HttpStatus; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.service.ResourceService; import io.vertx.core.Future; import io.vertx.core.http.HttpHeaders; import lombok.extern.slf4j.Slf4j; diff --git a/server/src/main/java/com/epam/aidial/core/server/controller/InterceptorController.java b/server/src/main/java/com/epam/aidial/core/server/controller/InterceptorController.java index 9bda7f20e..341ebacf0 100644 --- a/server/src/main/java/com/epam/aidial/core/server/controller/InterceptorController.java +++ b/server/src/main/java/com/epam/aidial/core/server/controller/InterceptorController.java @@ -8,9 +8,9 @@ import com.epam.aidial.core.server.function.CollectRequestAttachmentsFn; import com.epam.aidial.core.server.function.CollectRequestDataFn; import com.epam.aidial.core.server.function.CollectResponseAttachmentsFn; -import com.epam.aidial.core.server.util.HttpStatus; import com.epam.aidial.core.server.util.ProxyUtil; import com.epam.aidial.core.server.vertx.stream.BufferingReadStream; +import com.epam.aidial.core.storage.http.HttpStatus; import com.fasterxml.jackson.databind.node.ObjectNode; import io.netty.buffer.ByteBufInputStream; import io.vertx.core.Future; diff --git a/server/src/main/java/com/epam/aidial/core/server/controller/InvitationController.java b/server/src/main/java/com/epam/aidial/core/server/controller/InvitationController.java index a4a974788..c2aab0d1e 100644 --- a/server/src/main/java/com/epam/aidial/core/server/controller/InvitationController.java +++ b/server/src/main/java/com/epam/aidial/core/server/controller/InvitationController.java @@ -2,15 +2,15 @@ import com.epam.aidial.core.server.Proxy; import com.epam.aidial.core.server.ProxyContext; -import com.epam.aidial.core.server.resource.ResourceDescriptor; import com.epam.aidial.core.server.security.EncryptionService; import com.epam.aidial.core.server.service.InvitationService; -import com.epam.aidial.core.server.service.LockService; import com.epam.aidial.core.server.service.PermissionDeniedException; import com.epam.aidial.core.server.service.ResourceNotFoundException; import com.epam.aidial.core.server.service.ShareService; import com.epam.aidial.core.server.util.BucketBuilder; -import com.epam.aidial.core.server.util.HttpStatus; +import com.epam.aidial.core.storage.http.HttpStatus; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.service.LockService; import io.vertx.core.Future; public class InvitationController { diff --git a/server/src/main/java/com/epam/aidial/core/server/controller/LimitController.java b/server/src/main/java/com/epam/aidial/core/server/controller/LimitController.java index 396d2ffbe..0958040d0 100644 --- a/server/src/main/java/com/epam/aidial/core/server/controller/LimitController.java +++ b/server/src/main/java/com/epam/aidial/core/server/controller/LimitController.java @@ -4,7 +4,7 @@ import com.epam.aidial.core.server.ProxyContext; import com.epam.aidial.core.server.service.PermissionDeniedException; import com.epam.aidial.core.server.service.ResourceNotFoundException; -import com.epam.aidial.core.server.util.HttpStatus; +import com.epam.aidial.core.storage.http.HttpStatus; import io.vertx.core.Future; import lombok.extern.slf4j.Slf4j; diff --git a/server/src/main/java/com/epam/aidial/core/server/controller/ModelController.java b/server/src/main/java/com/epam/aidial/core/server/controller/ModelController.java index f8881e3fe..880ed830a 100644 --- a/server/src/main/java/com/epam/aidial/core/server/controller/ModelController.java +++ b/server/src/main/java/com/epam/aidial/core/server/controller/ModelController.java @@ -10,7 +10,7 @@ import com.epam.aidial.core.server.data.ModelData; import com.epam.aidial.core.server.data.PricingData; import com.epam.aidial.core.server.data.TokenLimitsData; -import com.epam.aidial.core.server.util.HttpStatus; +import com.epam.aidial.core.storage.http.HttpStatus; import io.vertx.core.Future; import lombok.RequiredArgsConstructor; diff --git a/server/src/main/java/com/epam/aidial/core/server/controller/NotificationController.java b/server/src/main/java/com/epam/aidial/core/server/controller/NotificationController.java index 5af5c9bd1..c8aa74d13 100644 --- a/server/src/main/java/com/epam/aidial/core/server/controller/NotificationController.java +++ b/server/src/main/java/com/epam/aidial/core/server/controller/NotificationController.java @@ -5,9 +5,9 @@ import com.epam.aidial.core.server.data.DeleteNotificationRequest; import com.epam.aidial.core.server.data.Notifications; import com.epam.aidial.core.server.service.NotificationService; -import com.epam.aidial.core.server.util.HttpException; -import com.epam.aidial.core.server.util.HttpStatus; import com.epam.aidial.core.server.util.ProxyUtil; +import com.epam.aidial.core.storage.http.HttpException; +import com.epam.aidial.core.storage.http.HttpStatus; import io.vertx.core.Future; import io.vertx.core.Vertx; import lombok.extern.slf4j.Slf4j; diff --git a/server/src/main/java/com/epam/aidial/core/server/controller/PublicationController.java b/server/src/main/java/com/epam/aidial/core/server/controller/PublicationController.java index 920f84e21..a78f7b19b 100644 --- a/server/src/main/java/com/epam/aidial/core/server/controller/PublicationController.java +++ b/server/src/main/java/com/epam/aidial/core/server/controller/PublicationController.java @@ -3,26 +3,26 @@ import com.epam.aidial.core.server.Proxy; import com.epam.aidial.core.server.ProxyContext; import com.epam.aidial.core.server.data.ListPublishedResourcesRequest; -import com.epam.aidial.core.server.data.MetadataBase; import com.epam.aidial.core.server.data.Publication; import com.epam.aidial.core.server.data.Publications; import com.epam.aidial.core.server.data.RejectPublicationRequest; import com.epam.aidial.core.server.data.ResourceLink; import com.epam.aidial.core.server.data.ResourceTypes; import com.epam.aidial.core.server.data.Rules; -import com.epam.aidial.core.server.resource.ResourceDescriptor; -import com.epam.aidial.core.server.resource.ResourceDescriptorFactory; import com.epam.aidial.core.server.security.AccessService; import com.epam.aidial.core.server.security.EncryptionService; -import com.epam.aidial.core.server.service.LockService; import com.epam.aidial.core.server.service.PermissionDeniedException; import com.epam.aidial.core.server.service.PublicationService; import com.epam.aidial.core.server.service.ResourceNotFoundException; import com.epam.aidial.core.server.service.RuleService; import com.epam.aidial.core.server.util.BucketBuilder; -import com.epam.aidial.core.server.util.HttpException; -import com.epam.aidial.core.server.util.HttpStatus; import com.epam.aidial.core.server.util.ProxyUtil; +import com.epam.aidial.core.server.util.ResourceDescriptorFactory; +import com.epam.aidial.core.storage.data.MetadataBase; +import com.epam.aidial.core.storage.http.HttpException; +import com.epam.aidial.core.storage.http.HttpStatus; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.service.LockService; import io.vertx.core.Future; import io.vertx.core.Vertx; import lombok.RequiredArgsConstructor; diff --git a/server/src/main/java/com/epam/aidial/core/server/controller/ResourceController.java b/server/src/main/java/com/epam/aidial/core/server/controller/ResourceController.java index c75b23472..d9d886039 100644 --- a/server/src/main/java/com/epam/aidial/core/server/controller/ResourceController.java +++ b/server/src/main/java/com/epam/aidial/core/server/controller/ResourceController.java @@ -4,24 +4,24 @@ import com.epam.aidial.core.server.Proxy; import com.epam.aidial.core.server.ProxyContext; import com.epam.aidial.core.server.data.Conversation; -import com.epam.aidial.core.server.data.MetadataBase; import com.epam.aidial.core.server.data.Prompt; -import com.epam.aidial.core.server.data.ResourceItemMetadata; import com.epam.aidial.core.server.data.ResourceTypes; -import com.epam.aidial.core.server.resource.ResourceDescriptor; -import com.epam.aidial.core.server.resource.ResourceDescriptorFactory; import com.epam.aidial.core.server.security.AccessService; import com.epam.aidial.core.server.service.ApplicationService; import com.epam.aidial.core.server.service.InvitationService; -import com.epam.aidial.core.server.service.LockService; import com.epam.aidial.core.server.service.PermissionDeniedException; import com.epam.aidial.core.server.service.ResourceNotFoundException; -import com.epam.aidial.core.server.service.ResourceService; import com.epam.aidial.core.server.service.ShareService; -import com.epam.aidial.core.server.util.EtagHeader; -import com.epam.aidial.core.server.util.HttpException; -import com.epam.aidial.core.server.util.HttpStatus; import com.epam.aidial.core.server.util.ProxyUtil; +import com.epam.aidial.core.server.util.ResourceDescriptorFactory; +import com.epam.aidial.core.storage.data.MetadataBase; +import com.epam.aidial.core.storage.data.ResourceItemMetadata; +import com.epam.aidial.core.storage.http.HttpException; +import com.epam.aidial.core.storage.http.HttpStatus; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.service.LockService; +import com.epam.aidial.core.storage.service.ResourceService; +import com.epam.aidial.core.storage.util.EtagHeader; import io.vertx.core.Future; import io.vertx.core.Vertx; import io.vertx.core.http.HttpHeaders; diff --git a/server/src/main/java/com/epam/aidial/core/server/controller/ResourceOperationController.java b/server/src/main/java/com/epam/aidial/core/server/controller/ResourceOperationController.java index 509c369db..8fec7b367 100644 --- a/server/src/main/java/com/epam/aidial/core/server/controller/ResourceOperationController.java +++ b/server/src/main/java/com/epam/aidial/core/server/controller/ResourceOperationController.java @@ -3,22 +3,23 @@ import com.epam.aidial.core.server.Proxy; import com.epam.aidial.core.server.ProxyContext; import com.epam.aidial.core.server.data.MoveResourcesRequest; -import com.epam.aidial.core.server.data.ResourceAccessType; -import com.epam.aidial.core.server.data.ResourceEvent; import com.epam.aidial.core.server.data.ResourceTypes; import com.epam.aidial.core.server.data.SubscribeResourcesRequest; -import com.epam.aidial.core.server.resource.ResourceDescriptor; -import com.epam.aidial.core.server.resource.ResourceDescriptorFactory; import com.epam.aidial.core.server.security.AccessService; import com.epam.aidial.core.server.security.EncryptionService; import com.epam.aidial.core.server.service.HeartbeatService; -import com.epam.aidial.core.server.service.LockService; import com.epam.aidial.core.server.service.PermissionDeniedException; import com.epam.aidial.core.server.service.ResourceOperationService; -import com.epam.aidial.core.server.service.ResourceTopic; -import com.epam.aidial.core.server.util.HttpException; -import com.epam.aidial.core.server.util.HttpStatus; import com.epam.aidial.core.server.util.ProxyUtil; +import com.epam.aidial.core.server.util.ResourceDescriptorFactory; +import com.epam.aidial.core.storage.data.ResourceAccessType; +import com.epam.aidial.core.storage.data.ResourceEvent; +import com.epam.aidial.core.storage.http.HttpException; +import com.epam.aidial.core.storage.http.HttpStatus; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.resource.ResourceType; +import com.epam.aidial.core.storage.service.LockService; +import com.epam.aidial.core.storage.service.ResourceTopic; import io.vertx.core.Future; import io.vertx.core.Vertx; import io.vertx.core.buffer.Buffer; @@ -35,7 +36,7 @@ @Slf4j public class ResourceOperationController { - private static final Set SUBSCRIPTION_ALLOWED_TYPES = Set.of( + private static final Set SUBSCRIPTION_ALLOWED_TYPES = Set.of( ResourceTypes.FILE, ResourceTypes.CONVERSATION, ResourceTypes.PROMPT, ResourceTypes.APPLICATION); private final ProxyContext context; diff --git a/server/src/main/java/com/epam/aidial/core/server/controller/RouteController.java b/server/src/main/java/com/epam/aidial/core/server/controller/RouteController.java index 313d8ddbf..0afa0c41c 100644 --- a/server/src/main/java/com/epam/aidial/core/server/controller/RouteController.java +++ b/server/src/main/java/com/epam/aidial/core/server/controller/RouteController.java @@ -8,9 +8,9 @@ import com.epam.aidial.core.server.upstream.RouteEndpointProvider; import com.epam.aidial.core.server.upstream.UpstreamProvider; import com.epam.aidial.core.server.upstream.UpstreamRoute; -import com.epam.aidial.core.server.util.HttpStatus; import com.epam.aidial.core.server.util.ProxyUtil; import com.epam.aidial.core.server.vertx.stream.BufferingReadStream; +import com.epam.aidial.core.storage.http.HttpStatus; import io.vertx.core.Future; import io.vertx.core.buffer.Buffer; import io.vertx.core.http.HttpClientRequest; diff --git a/server/src/main/java/com/epam/aidial/core/server/controller/ShareController.java b/server/src/main/java/com/epam/aidial/core/server/controller/ShareController.java index b07afe388..1f1c91587 100644 --- a/server/src/main/java/com/epam/aidial/core/server/controller/ShareController.java +++ b/server/src/main/java/com/epam/aidial/core/server/controller/ShareController.java @@ -4,21 +4,21 @@ import com.epam.aidial.core.server.ProxyContext; import com.epam.aidial.core.server.data.CopySharedAccessRequest; import com.epam.aidial.core.server.data.ListSharedResourcesRequest; -import com.epam.aidial.core.server.data.ResourceAccessType; import com.epam.aidial.core.server.data.ResourceLinkCollection; import com.epam.aidial.core.server.data.RevokeResourcesRequest; import com.epam.aidial.core.server.data.ShareResourcesRequest; import com.epam.aidial.core.server.data.SharedResource; -import com.epam.aidial.core.server.resource.ResourceDescriptor; -import com.epam.aidial.core.server.resource.ResourceDescriptorFactory; import com.epam.aidial.core.server.security.EncryptionService; import com.epam.aidial.core.server.service.InvitationService; -import com.epam.aidial.core.server.service.LockService; import com.epam.aidial.core.server.service.ShareService; import com.epam.aidial.core.server.util.BucketBuilder; -import com.epam.aidial.core.server.util.HttpException; -import com.epam.aidial.core.server.util.HttpStatus; import com.epam.aidial.core.server.util.ProxyUtil; +import com.epam.aidial.core.server.util.ResourceDescriptorFactory; +import com.epam.aidial.core.storage.data.ResourceAccessType; +import com.epam.aidial.core.storage.http.HttpException; +import com.epam.aidial.core.storage.http.HttpStatus; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.service.LockService; import io.vertx.core.Future; import io.vertx.core.buffer.Buffer; import lombok.extern.slf4j.Slf4j; diff --git a/server/src/main/java/com/epam/aidial/core/server/controller/UploadFileController.java b/server/src/main/java/com/epam/aidial/core/server/controller/UploadFileController.java index 0ae90a74c..34c038463 100644 --- a/server/src/main/java/com/epam/aidial/core/server/controller/UploadFileController.java +++ b/server/src/main/java/com/epam/aidial/core/server/controller/UploadFileController.java @@ -2,13 +2,13 @@ import com.epam.aidial.core.server.Proxy; import com.epam.aidial.core.server.ProxyContext; -import com.epam.aidial.core.server.data.FileMetadata; -import com.epam.aidial.core.server.resource.ResourceDescriptor; -import com.epam.aidial.core.server.resource.ResourceDescriptorFactory; -import com.epam.aidial.core.server.util.EtagHeader; -import com.epam.aidial.core.server.util.HttpStatus; import com.epam.aidial.core.server.util.ProxyUtil; +import com.epam.aidial.core.server.util.ResourceDescriptorFactory; import com.epam.aidial.core.server.vertx.stream.BlobWriteStream; +import com.epam.aidial.core.storage.data.FileMetadata; +import com.epam.aidial.core.storage.http.HttpStatus; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.util.EtagHeader; import io.vertx.core.Future; import io.vertx.core.buffer.Buffer; import io.vertx.core.http.HttpHeaders; diff --git a/server/src/main/java/com/epam/aidial/core/server/controller/UserInfoController.java b/server/src/main/java/com/epam/aidial/core/server/controller/UserInfoController.java index 051789b43..f44de6de0 100644 --- a/server/src/main/java/com/epam/aidial/core/server/controller/UserInfoController.java +++ b/server/src/main/java/com/epam/aidial/core/server/controller/UserInfoController.java @@ -1,7 +1,7 @@ package com.epam.aidial.core.server.controller; import com.epam.aidial.core.server.ProxyContext; -import com.epam.aidial.core.server.util.HttpStatus; +import com.epam.aidial.core.storage.http.HttpStatus; import io.vertx.core.Future; import io.vertx.core.json.JsonObject; import lombok.AllArgsConstructor; diff --git a/server/src/main/java/com/epam/aidial/core/server/data/AutoSharedData.java b/server/src/main/java/com/epam/aidial/core/server/data/AutoSharedData.java index 4dafede5f..daf5660a4 100644 --- a/server/src/main/java/com/epam/aidial/core/server/data/AutoSharedData.java +++ b/server/src/main/java/com/epam/aidial/core/server/data/AutoSharedData.java @@ -1,5 +1,7 @@ package com.epam.aidial.core.server.data; +import com.epam.aidial.core.storage.data.ResourceAccessType; + import java.util.Set; public record AutoSharedData(Set accessTypes) { diff --git a/server/src/main/java/com/epam/aidial/core/server/data/ResourceTypes.java b/server/src/main/java/com/epam/aidial/core/server/data/ResourceTypes.java index be473bbcc..d0366fee9 100644 --- a/server/src/main/java/com/epam/aidial/core/server/data/ResourceTypes.java +++ b/server/src/main/java/com/epam/aidial/core/server/data/ResourceTypes.java @@ -1,6 +1,6 @@ package com.epam.aidial.core.server.data; -import com.epam.aidial.core.server.resource.ResourceType; +import com.epam.aidial.core.storage.resource.ResourceType; public enum ResourceTypes implements ResourceType { FILE("files", false), CONVERSATION("conversations", true), diff --git a/server/src/main/java/com/epam/aidial/core/server/data/ResourceUrl.java b/server/src/main/java/com/epam/aidial/core/server/data/ResourceUrl.java index 0c6d67659..ff739cf6a 100644 --- a/server/src/main/java/com/epam/aidial/core/server/data/ResourceUrl.java +++ b/server/src/main/java/com/epam/aidial/core/server/data/ResourceUrl.java @@ -1,7 +1,7 @@ package com.epam.aidial.core.server.data; -import com.epam.aidial.core.server.resource.ResourceDescriptor; -import com.epam.aidial.core.server.util.UrlUtil; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.util.UrlUtil; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/server/src/main/java/com/epam/aidial/core/server/data/SharedByMeDto.java b/server/src/main/java/com/epam/aidial/core/server/data/SharedByMeDto.java index 5ffd244f6..b82016074 100644 --- a/server/src/main/java/com/epam/aidial/core/server/data/SharedByMeDto.java +++ b/server/src/main/java/com/epam/aidial/core/server/data/SharedByMeDto.java @@ -1,5 +1,6 @@ package com.epam.aidial.core.server.data; +import com.epam.aidial.core.storage.data.ResourceAccessType; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; diff --git a/server/src/main/java/com/epam/aidial/core/server/data/SharedResource.java b/server/src/main/java/com/epam/aidial/core/server/data/SharedResource.java index fe5d71b09..3723e61df 100644 --- a/server/src/main/java/com/epam/aidial/core/server/data/SharedResource.java +++ b/server/src/main/java/com/epam/aidial/core/server/data/SharedResource.java @@ -1,5 +1,7 @@ package com.epam.aidial.core.server.data; +import com.epam.aidial.core.storage.data.ResourceAccessType; + import java.util.EnumSet; import java.util.Set; diff --git a/server/src/main/java/com/epam/aidial/core/server/data/SharedResources.java b/server/src/main/java/com/epam/aidial/core/server/data/SharedResources.java index 8924bcbe6..d0bd17646 100644 --- a/server/src/main/java/com/epam/aidial/core/server/data/SharedResources.java +++ b/server/src/main/java/com/epam/aidial/core/server/data/SharedResources.java @@ -1,6 +1,7 @@ package com.epam.aidial.core.server.data; import com.epam.aidial.core.server.service.ShareService; +import com.epam.aidial.core.storage.data.ResourceAccessType; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/server/src/main/java/com/epam/aidial/core/server/data/SharedResourcesResponse.java b/server/src/main/java/com/epam/aidial/core/server/data/SharedResourcesResponse.java index 3b6fd8fe5..1fede6297 100644 --- a/server/src/main/java/com/epam/aidial/core/server/data/SharedResourcesResponse.java +++ b/server/src/main/java/com/epam/aidial/core/server/data/SharedResourcesResponse.java @@ -1,5 +1,6 @@ package com.epam.aidial.core.server.data; +import com.epam.aidial.core.storage.data.MetadataBase; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/server/src/main/java/com/epam/aidial/core/server/function/BaseFunction.java b/server/src/main/java/com/epam/aidial/core/server/function/BaseFunction.java index b95fe55c9..ed0a60231 100644 --- a/server/src/main/java/com/epam/aidial/core/server/function/BaseFunction.java +++ b/server/src/main/java/com/epam/aidial/core/server/function/BaseFunction.java @@ -2,10 +2,10 @@ import com.epam.aidial.core.server.Proxy; import com.epam.aidial.core.server.ProxyContext; -import com.epam.aidial.core.server.resource.ResourceDescriptor; -import com.epam.aidial.core.server.resource.ResourceDescriptorFactory; import com.epam.aidial.core.server.security.EncryptionService; -import com.epam.aidial.core.server.util.UrlUtil; +import com.epam.aidial.core.server.util.ResourceDescriptorFactory; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.util.UrlUtil; import lombok.SneakyThrows; import java.util.function.Function; diff --git a/server/src/main/java/com/epam/aidial/core/server/function/CollectRequestAttachmentsFn.java b/server/src/main/java/com/epam/aidial/core/server/function/CollectRequestAttachmentsFn.java index 5918d0030..b165ba7b2 100644 --- a/server/src/main/java/com/epam/aidial/core/server/function/CollectRequestAttachmentsFn.java +++ b/server/src/main/java/com/epam/aidial/core/server/function/CollectRequestAttachmentsFn.java @@ -4,12 +4,12 @@ import com.epam.aidial.core.server.ProxyContext; import com.epam.aidial.core.server.data.ApiKeyData; import com.epam.aidial.core.server.data.AutoSharedData; -import com.epam.aidial.core.server.data.ResourceAccessType; -import com.epam.aidial.core.server.resource.ResourceDescriptor; import com.epam.aidial.core.server.security.AccessService; -import com.epam.aidial.core.server.util.HttpException; -import com.epam.aidial.core.server.util.HttpStatus; import com.epam.aidial.core.server.util.ProxyUtil; +import com.epam.aidial.core.storage.data.ResourceAccessType; +import com.epam.aidial.core.storage.http.HttpException; +import com.epam.aidial.core.storage.http.HttpStatus; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; import com.fasterxml.jackson.databind.node.ObjectNode; import lombok.extern.slf4j.Slf4j; diff --git a/server/src/main/java/com/epam/aidial/core/server/function/CollectResponseAttachmentsFn.java b/server/src/main/java/com/epam/aidial/core/server/function/CollectResponseAttachmentsFn.java index 676537659..1c1125e43 100644 --- a/server/src/main/java/com/epam/aidial/core/server/function/CollectResponseAttachmentsFn.java +++ b/server/src/main/java/com/epam/aidial/core/server/function/CollectResponseAttachmentsFn.java @@ -4,11 +4,11 @@ import com.epam.aidial.core.server.ProxyContext; import com.epam.aidial.core.server.data.ApiKeyData; import com.epam.aidial.core.server.data.AutoSharedData; -import com.epam.aidial.core.server.data.ResourceAccessType; -import com.epam.aidial.core.server.resource.ResourceDescriptor; -import com.epam.aidial.core.server.resource.ResourceUtil; import com.epam.aidial.core.server.security.AccessService; import com.epam.aidial.core.server.util.ProxyUtil; +import com.epam.aidial.core.storage.data.ResourceAccessType; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.resource.ResourceUtil; import com.fasterxml.jackson.databind.node.ObjectNode; import io.vertx.core.Future; import lombok.extern.slf4j.Slf4j; diff --git a/server/src/main/java/com/epam/aidial/core/server/function/enhancement/ApplyDefaultDeploymentSettingsFn.java b/server/src/main/java/com/epam/aidial/core/server/function/enhancement/ApplyDefaultDeploymentSettingsFn.java index f97cfb430..1f62ff99f 100644 --- a/server/src/main/java/com/epam/aidial/core/server/function/enhancement/ApplyDefaultDeploymentSettingsFn.java +++ b/server/src/main/java/com/epam/aidial/core/server/function/enhancement/ApplyDefaultDeploymentSettingsFn.java @@ -4,8 +4,8 @@ import com.epam.aidial.core.server.Proxy; import com.epam.aidial.core.server.ProxyContext; import com.epam.aidial.core.server.function.BaseRequestFunction; -import com.epam.aidial.core.server.util.HttpStatus; import com.epam.aidial.core.server.util.ProxyUtil; +import com.epam.aidial.core.storage.http.HttpStatus; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; import io.vertx.core.buffer.Buffer; diff --git a/server/src/main/java/com/epam/aidial/core/server/function/enhancement/EnhanceAssistantRequestFn.java b/server/src/main/java/com/epam/aidial/core/server/function/enhancement/EnhanceAssistantRequestFn.java index 36d1ab0c3..004a4e883 100644 --- a/server/src/main/java/com/epam/aidial/core/server/function/enhancement/EnhanceAssistantRequestFn.java +++ b/server/src/main/java/com/epam/aidial/core/server/function/enhancement/EnhanceAssistantRequestFn.java @@ -9,9 +9,9 @@ import com.epam.aidial.core.server.ProxyContext; import com.epam.aidial.core.server.controller.DeploymentController; import com.epam.aidial.core.server.function.BaseRequestFunction; -import com.epam.aidial.core.server.util.HttpException; -import com.epam.aidial.core.server.util.HttpStatus; import com.epam.aidial.core.server.util.ProxyUtil; +import com.epam.aidial.core.storage.http.HttpException; +import com.epam.aidial.core.storage.http.HttpStatus; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; diff --git a/server/src/main/java/com/epam/aidial/core/server/function/enhancement/EnhanceModelRequestFn.java b/server/src/main/java/com/epam/aidial/core/server/function/enhancement/EnhanceModelRequestFn.java index f9ae93f37..ce96621d4 100644 --- a/server/src/main/java/com/epam/aidial/core/server/function/enhancement/EnhanceModelRequestFn.java +++ b/server/src/main/java/com/epam/aidial/core/server/function/enhancement/EnhanceModelRequestFn.java @@ -5,8 +5,8 @@ import com.epam.aidial.core.server.Proxy; import com.epam.aidial.core.server.ProxyContext; import com.epam.aidial.core.server.function.BaseRequestFunction; -import com.epam.aidial.core.server.util.HttpStatus; import com.epam.aidial.core.server.util.ProxyUtil; +import com.epam.aidial.core.storage.http.HttpStatus; import com.fasterxml.jackson.databind.node.ObjectNode; import io.vertx.core.buffer.Buffer; import lombok.extern.slf4j.Slf4j; diff --git a/server/src/main/java/com/epam/aidial/core/server/limiter/RateLimitResult.java b/server/src/main/java/com/epam/aidial/core/server/limiter/RateLimitResult.java index 8f419ea30..c1f4b5e25 100644 --- a/server/src/main/java/com/epam/aidial/core/server/limiter/RateLimitResult.java +++ b/server/src/main/java/com/epam/aidial/core/server/limiter/RateLimitResult.java @@ -1,6 +1,6 @@ package com.epam.aidial.core.server.limiter; -import com.epam.aidial.core.server.util.HttpStatus; +import com.epam.aidial.core.storage.http.HttpStatus; public record RateLimitResult(HttpStatus status, String errorMessage) { public static final RateLimitResult SUCCESS = new RateLimitResult(HttpStatus.OK, null); diff --git a/server/src/main/java/com/epam/aidial/core/server/limiter/RateLimiter.java b/server/src/main/java/com/epam/aidial/core/server/limiter/RateLimiter.java index 8a125e577..69c4e5412 100644 --- a/server/src/main/java/com/epam/aidial/core/server/limiter/RateLimiter.java +++ b/server/src/main/java/com/epam/aidial/core/server/limiter/RateLimiter.java @@ -7,13 +7,13 @@ import com.epam.aidial.core.server.data.ItemLimitStats; import com.epam.aidial.core.server.data.LimitStats; import com.epam.aidial.core.server.data.ResourceTypes; -import com.epam.aidial.core.server.resource.ResourceDescriptor; -import com.epam.aidial.core.server.resource.ResourceDescriptorFactory; -import com.epam.aidial.core.server.service.ResourceService; import com.epam.aidial.core.server.token.TokenUsage; import com.epam.aidial.core.server.util.BucketBuilder; -import com.epam.aidial.core.server.util.HttpStatus; import com.epam.aidial.core.server.util.ProxyUtil; +import com.epam.aidial.core.server.util.ResourceDescriptorFactory; +import com.epam.aidial.core.storage.http.HttpStatus; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.service.ResourceService; import io.vertx.core.Future; import io.vertx.core.Vertx; import lombok.RequiredArgsConstructor; @@ -103,7 +103,7 @@ private LimitStats getLimitStats(ProxyContext context, Limit limit, String deplo private void collectTokenLimitStats(ProxyContext context, LimitStats limitStats, long timestamp, String deploymentName) { String tokensPath = getPathToTokens(deploymentName); ResourceDescriptor resourceDescription = getResourceDescription(context, tokensPath); - String json = resourceService.getResource(resourceDescription, true); + String json = resourceService.getResource(resourceDescription); TokenRateLimit rateLimit = ProxyUtil.convertToObject(json, TokenRateLimit.class); if (rateLimit == null) { return; @@ -114,7 +114,7 @@ private void collectTokenLimitStats(ProxyContext context, LimitStats limitStats, private void collectRequestLimitStats(ProxyContext context, LimitStats limitStats, long timestamp, String deploymentName) { String requestsPath = getPathToRequests(deploymentName); ResourceDescriptor resourceDescription = getResourceDescription(context, requestsPath); - String json = resourceService.getResource(resourceDescription, true); + String json = resourceService.getResource(resourceDescription); RequestRateLimit rateLimit = ProxyUtil.convertToObject(json, RequestRateLimit.class); if (rateLimit == null) { return; diff --git a/server/src/main/java/com/epam/aidial/core/server/limiter/RequestRateLimit.java b/server/src/main/java/com/epam/aidial/core/server/limiter/RequestRateLimit.java index e45adb7a4..8ef54afd4 100644 --- a/server/src/main/java/com/epam/aidial/core/server/limiter/RequestRateLimit.java +++ b/server/src/main/java/com/epam/aidial/core/server/limiter/RequestRateLimit.java @@ -2,7 +2,7 @@ import com.epam.aidial.core.config.Limit; import com.epam.aidial.core.server.data.LimitStats; -import com.epam.aidial.core.server.util.HttpStatus; +import com.epam.aidial.core.storage.http.HttpStatus; import lombok.Data; @Data diff --git a/server/src/main/java/com/epam/aidial/core/server/limiter/TokenRateLimit.java b/server/src/main/java/com/epam/aidial/core/server/limiter/TokenRateLimit.java index fc7e8e7a7..bb9a760ac 100644 --- a/server/src/main/java/com/epam/aidial/core/server/limiter/TokenRateLimit.java +++ b/server/src/main/java/com/epam/aidial/core/server/limiter/TokenRateLimit.java @@ -2,7 +2,7 @@ import com.epam.aidial.core.config.Limit; import com.epam.aidial.core.server.data.LimitStats; -import com.epam.aidial.core.server.util.HttpStatus; +import com.epam.aidial.core.storage.http.HttpStatus; import lombok.Data; @Data diff --git a/server/src/main/java/com/epam/aidial/core/server/security/AccessService.java b/server/src/main/java/com/epam/aidial/core/server/security/AccessService.java index 11ef87463..ecb8806cc 100644 --- a/server/src/main/java/com/epam/aidial/core/server/security/AccessService.java +++ b/server/src/main/java/com/epam/aidial/core/server/security/AccessService.java @@ -2,19 +2,19 @@ import com.epam.aidial.core.server.ProxyContext; import com.epam.aidial.core.server.data.AutoSharedData; -import com.epam.aidial.core.server.data.MetadataBase; -import com.epam.aidial.core.server.data.ResourceAccessType; -import com.epam.aidial.core.server.data.ResourceFolderMetadata; import com.epam.aidial.core.server.data.Rule; -import com.epam.aidial.core.server.resource.ResourceDescriptor; -import com.epam.aidial.core.server.resource.ResourceDescriptorFactory; import com.epam.aidial.core.server.service.ApplicationService; import com.epam.aidial.core.server.service.PublicationService; import com.epam.aidial.core.server.service.RuleService; import com.epam.aidial.core.server.service.ShareService; import com.epam.aidial.core.server.util.BucketBuilder; import com.epam.aidial.core.server.util.ProxyUtil; -import com.epam.aidial.core.server.util.UrlUtil; +import com.epam.aidial.core.server.util.ResourceDescriptorFactory; +import com.epam.aidial.core.storage.data.MetadataBase; +import com.epam.aidial.core.storage.data.ResourceAccessType; +import com.epam.aidial.core.storage.data.ResourceFolderMetadata; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.util.UrlUtil; import com.google.common.collect.Sets; import io.vertx.core.json.JsonObject; diff --git a/server/src/main/java/com/epam/aidial/core/server/security/ApiKeyStore.java b/server/src/main/java/com/epam/aidial/core/server/security/ApiKeyStore.java index 476aaace0..6e4fada9f 100644 --- a/server/src/main/java/com/epam/aidial/core/server/security/ApiKeyStore.java +++ b/server/src/main/java/com/epam/aidial/core/server/security/ApiKeyStore.java @@ -4,13 +4,13 @@ import com.epam.aidial.core.server.config.FileConfigStore; import com.epam.aidial.core.server.data.ApiKeyData; import com.epam.aidial.core.server.data.ResourceTypes; -import com.epam.aidial.core.server.resource.ResourceDescriptor; -import com.epam.aidial.core.server.resource.ResourceDescriptorFactory; -import com.epam.aidial.core.server.service.ResourceService; -import com.epam.aidial.core.server.util.EtagHeader; -import com.epam.aidial.core.server.util.HttpException; -import com.epam.aidial.core.server.util.HttpStatus; import com.epam.aidial.core.server.util.ProxyUtil; +import com.epam.aidial.core.server.util.ResourceDescriptorFactory; +import com.epam.aidial.core.storage.http.HttpException; +import com.epam.aidial.core.storage.http.HttpStatus; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.service.ResourceService; +import com.epam.aidial.core.storage.util.EtagHeader; import io.vertx.core.Future; import io.vertx.core.Vertx; import lombok.extern.slf4j.Slf4j; @@ -20,8 +20,8 @@ import java.util.Map; import java.util.function.Function; -import static com.epam.aidial.core.server.resource.ResourceDescriptor.PATH_SEPARATOR; import static com.epam.aidial.core.server.security.ApiKeyGenerator.generateKey; +import static com.epam.aidial.core.storage.resource.ResourceDescriptor.PATH_SEPARATOR; /** * The store keeps per request and project API key data. @@ -62,7 +62,7 @@ public void assignPerRequestApiKey(ApiKeyData data) { data.setPerRequestKey(perRequestKey); String json = ProxyUtil.convertToString(data); try { - resourceService.putResource(resource, json, EtagHeader.NEW_ONLY, false); + resourceService.putResource(resource, json, EtagHeader.NEW_ONLY); } catch (HttpException exception) { throw exception.getStatus() == HttpStatus.PRECONDITION_FAILED ? new IllegalStateException(String.format("API key %s already exists in the storage", perRequestKey)) diff --git a/server/src/main/java/com/epam/aidial/core/server/service/ApplicationOperatorService.java b/server/src/main/java/com/epam/aidial/core/server/service/ApplicationOperatorService.java index f4ae6295f..499a80675 100644 --- a/server/src/main/java/com/epam/aidial/core/server/service/ApplicationOperatorService.java +++ b/server/src/main/java/com/epam/aidial/core/server/service/ApplicationOperatorService.java @@ -3,9 +3,9 @@ import com.epam.aidial.core.config.Application; import com.epam.aidial.core.server.Proxy; import com.epam.aidial.core.server.ProxyContext; -import com.epam.aidial.core.server.util.HttpException; -import com.epam.aidial.core.server.util.HttpStatus; import com.epam.aidial.core.server.util.ProxyUtil; +import com.epam.aidial.core.storage.http.HttpException; +import com.epam.aidial.core.storage.http.HttpStatus; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import io.vertx.core.http.HttpClient; import io.vertx.core.http.HttpClientRequest; diff --git a/server/src/main/java/com/epam/aidial/core/server/service/ApplicationService.java b/server/src/main/java/com/epam/aidial/core/server/service/ApplicationService.java index a18133f59..f087ddde8 100644 --- a/server/src/main/java/com/epam/aidial/core/server/service/ApplicationService.java +++ b/server/src/main/java/com/epam/aidial/core/server/service/ApplicationService.java @@ -5,23 +5,25 @@ import com.epam.aidial.core.server.ProxyContext; import com.epam.aidial.core.server.controller.ApplicationUtil; import com.epam.aidial.core.server.data.ListSharedResourcesRequest; -import com.epam.aidial.core.server.data.MetadataBase; -import com.epam.aidial.core.server.data.NodeType; -import com.epam.aidial.core.server.data.ResourceFolderMetadata; -import com.epam.aidial.core.server.data.ResourceItemMetadata; import com.epam.aidial.core.server.data.ResourceTypes; import com.epam.aidial.core.server.data.SharedResourcesResponse; -import com.epam.aidial.core.server.resource.ResourceDescriptor; -import com.epam.aidial.core.server.resource.ResourceDescriptorFactory; import com.epam.aidial.core.server.security.AccessService; import com.epam.aidial.core.server.security.EncryptionService; -import com.epam.aidial.core.server.storage.BlobStorageUtil; import com.epam.aidial.core.server.util.BucketBuilder; -import com.epam.aidial.core.server.util.EtagHeader; -import com.epam.aidial.core.server.util.HttpException; -import com.epam.aidial.core.server.util.HttpStatus; import com.epam.aidial.core.server.util.ProxyUtil; -import com.epam.aidial.core.server.util.UrlUtil; +import com.epam.aidial.core.server.util.ResourceDescriptorFactory; +import com.epam.aidial.core.storage.blobstore.BlobStorageUtil; +import com.epam.aidial.core.storage.data.MetadataBase; +import com.epam.aidial.core.storage.data.NodeType; +import com.epam.aidial.core.storage.data.ResourceFolderMetadata; +import com.epam.aidial.core.storage.data.ResourceItemMetadata; +import com.epam.aidial.core.storage.http.HttpException; +import com.epam.aidial.core.storage.http.HttpStatus; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.service.LockService; +import com.epam.aidial.core.storage.service.ResourceService; +import com.epam.aidial.core.storage.util.EtagHeader; +import com.epam.aidial.core.storage.util.UrlUtil; import io.vertx.core.Vertx; import io.vertx.core.http.HttpClient; import io.vertx.core.json.JsonObject; diff --git a/server/src/main/java/com/epam/aidial/core/server/service/InvitationService.java b/server/src/main/java/com/epam/aidial/core/server/service/InvitationService.java index 97af9f627..4be86d8d2 100644 --- a/server/src/main/java/com/epam/aidial/core/server/service/InvitationService.java +++ b/server/src/main/java/com/epam/aidial/core/server/service/InvitationService.java @@ -3,14 +3,15 @@ import com.epam.aidial.core.server.data.Invitation; import com.epam.aidial.core.server.data.InvitationCollection; import com.epam.aidial.core.server.data.InvitationsMap; -import com.epam.aidial.core.server.data.ResourceAccessType; import com.epam.aidial.core.server.data.ResourceTypes; import com.epam.aidial.core.server.data.SharedResource; -import com.epam.aidial.core.server.resource.ResourceDescriptor; -import com.epam.aidial.core.server.resource.ResourceDescriptorFactory; import com.epam.aidial.core.server.security.ApiKeyGenerator; import com.epam.aidial.core.server.security.EncryptionService; import com.epam.aidial.core.server.util.ProxyUtil; +import com.epam.aidial.core.server.util.ResourceDescriptorFactory; +import com.epam.aidial.core.storage.data.ResourceAccessType; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.service.ResourceService; import io.vertx.core.json.JsonObject; import lombok.extern.slf4j.Slf4j; diff --git a/server/src/main/java/com/epam/aidial/core/server/service/NotificationService.java b/server/src/main/java/com/epam/aidial/core/server/service/NotificationService.java index f39d534a1..55a188d55 100644 --- a/server/src/main/java/com/epam/aidial/core/server/service/NotificationService.java +++ b/server/src/main/java/com/epam/aidial/core/server/service/NotificationService.java @@ -4,11 +4,12 @@ import com.epam.aidial.core.server.data.DeleteNotificationRequest; import com.epam.aidial.core.server.data.Notification; import com.epam.aidial.core.server.data.ResourceTypes; -import com.epam.aidial.core.server.resource.ResourceDescriptor; -import com.epam.aidial.core.server.resource.ResourceDescriptorFactory; import com.epam.aidial.core.server.security.EncryptionService; import com.epam.aidial.core.server.util.BucketBuilder; import com.epam.aidial.core.server.util.ProxyUtil; +import com.epam.aidial.core.server.util.ResourceDescriptorFactory; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.service.ResourceService; import com.fasterxml.jackson.core.type.TypeReference; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/server/src/main/java/com/epam/aidial/core/server/service/PublicationService.java b/server/src/main/java/com/epam/aidial/core/server/service/PublicationService.java index 3cab6db1d..e09abe913 100644 --- a/server/src/main/java/com/epam/aidial/core/server/service/PublicationService.java +++ b/server/src/main/java/com/epam/aidial/core/server/service/PublicationService.java @@ -4,23 +4,25 @@ import com.epam.aidial.core.server.ProxyContext; import com.epam.aidial.core.server.controller.ApplicationUtil; import com.epam.aidial.core.server.data.ListPublishedResourcesRequest; -import com.epam.aidial.core.server.data.MetadataBase; import com.epam.aidial.core.server.data.Notification; import com.epam.aidial.core.server.data.Publication; import com.epam.aidial.core.server.data.RejectPublicationRequest; -import com.epam.aidial.core.server.data.ResourceFolderMetadata; -import com.epam.aidial.core.server.data.ResourceItemMetadata; import com.epam.aidial.core.server.data.ResourceTypes; import com.epam.aidial.core.server.data.ResourceUrl; import com.epam.aidial.core.server.data.Rule; -import com.epam.aidial.core.server.resource.ResourceDescriptor; -import com.epam.aidial.core.server.resource.ResourceDescriptorFactory; import com.epam.aidial.core.server.security.AccessService; import com.epam.aidial.core.server.security.EncryptionService; import com.epam.aidial.core.server.util.BucketBuilder; -import com.epam.aidial.core.server.util.EtagHeader; import com.epam.aidial.core.server.util.ProxyUtil; -import com.epam.aidial.core.server.util.UrlUtil; +import com.epam.aidial.core.server.util.ResourceDescriptorFactory; +import com.epam.aidial.core.storage.data.MetadataBase; +import com.epam.aidial.core.storage.data.ResourceFolderMetadata; +import com.epam.aidial.core.storage.data.ResourceItemMetadata; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.resource.ResourceType; +import com.epam.aidial.core.storage.service.ResourceService; +import com.epam.aidial.core.storage.util.EtagHeader; +import com.epam.aidial.core.storage.util.UrlUtil; import com.fasterxml.jackson.core.type.TypeReference; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.mutable.MutableObject; @@ -48,7 +50,7 @@ public class PublicationService { private static final ResourceDescriptor PUBLIC_PUBLICATIONS = ResourceDescriptorFactory.fromDecoded( ResourceTypes.PUBLICATION, ResourceDescriptor.PUBLIC_BUCKET, ResourceDescriptor.PUBLIC_LOCATION, PUBLICATIONS_NAME); - private static final Set ALLOWED_RESOURCES = Set.of(ResourceTypes.FILE, ResourceTypes.CONVERSATION, + private static final Set ALLOWED_RESOURCES = Set.of(ResourceTypes.FILE, ResourceTypes.CONVERSATION, ResourceTypes.PROMPT, ResourceTypes.APPLICATION); private final EncryptionService encryption; @@ -102,7 +104,7 @@ public Collection listPublishedResources(ListPublishedResourcesReq Set resourceSet = approvedPublications.stream() .flatMap(publication -> publication.getResources().stream()) .collect(Collectors.toSet()); - Set requestedResourceTypes = request.getResourceTypes(); + Set requestedResourceTypes = request.getResourceTypes(); Set metadata = new HashSet<>(); for (Publication.Resource resource : resourceSet) { diff --git a/server/src/main/java/com/epam/aidial/core/server/service/PublicationUtil.java b/server/src/main/java/com/epam/aidial/core/server/service/PublicationUtil.java index d396e45af..241c903d1 100644 --- a/server/src/main/java/com/epam/aidial/core/server/service/PublicationUtil.java +++ b/server/src/main/java/com/epam/aidial/core/server/service/PublicationUtil.java @@ -1,8 +1,8 @@ package com.epam.aidial.core.server.service; -import com.epam.aidial.core.server.resource.ResourceDescriptor; import com.epam.aidial.core.server.util.ProxyUtil; -import com.epam.aidial.core.server.util.UrlUtil; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.util.UrlUtil; import io.vertx.core.json.JsonArray; import io.vertx.core.json.JsonObject; import lombok.experimental.UtilityClass; diff --git a/server/src/main/java/com/epam/aidial/core/server/service/ResourceOperationService.java b/server/src/main/java/com/epam/aidial/core/server/service/ResourceOperationService.java index 3d58bf947..6f0bafd79 100644 --- a/server/src/main/java/com/epam/aidial/core/server/service/ResourceOperationService.java +++ b/server/src/main/java/com/epam/aidial/core/server/service/ResourceOperationService.java @@ -1,12 +1,14 @@ package com.epam.aidial.core.server.service; -import com.epam.aidial.core.server.data.ResourceAccessType; -import com.epam.aidial.core.server.data.ResourceEvent; import com.epam.aidial.core.server.data.ResourceTypes; -import com.epam.aidial.core.server.resource.ResourceDescriptor; -import com.epam.aidial.core.server.util.EtagHeader; -import com.epam.aidial.core.server.util.HttpException; -import com.epam.aidial.core.server.util.HttpStatus; +import com.epam.aidial.core.storage.data.ResourceAccessType; +import com.epam.aidial.core.storage.data.ResourceEvent; +import com.epam.aidial.core.storage.http.HttpException; +import com.epam.aidial.core.storage.http.HttpStatus; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.service.ResourceService; +import com.epam.aidial.core.storage.service.ResourceTopic; +import com.epam.aidial.core.storage.util.EtagHeader; import lombok.AllArgsConstructor; import java.util.Collection; diff --git a/server/src/main/java/com/epam/aidial/core/server/service/RuleService.java b/server/src/main/java/com/epam/aidial/core/server/service/RuleService.java index 447756315..9481ff16d 100644 --- a/server/src/main/java/com/epam/aidial/core/server/service/RuleService.java +++ b/server/src/main/java/com/epam/aidial/core/server/service/RuleService.java @@ -1,16 +1,17 @@ package com.epam.aidial.core.server.service; import com.epam.aidial.core.server.ProxyContext; -import com.epam.aidial.core.server.data.MetadataBase; import com.epam.aidial.core.server.data.Publication; -import com.epam.aidial.core.server.data.ResourceFolderMetadata; -import com.epam.aidial.core.server.data.ResourceItemMetadata; import com.epam.aidial.core.server.data.ResourceTypes; import com.epam.aidial.core.server.data.Rule; -import com.epam.aidial.core.server.resource.ResourceDescriptor; -import com.epam.aidial.core.server.resource.ResourceDescriptorFactory; import com.epam.aidial.core.server.security.RuleMatcher; import com.epam.aidial.core.server.util.ProxyUtil; +import com.epam.aidial.core.server.util.ResourceDescriptorFactory; +import com.epam.aidial.core.storage.data.MetadataBase; +import com.epam.aidial.core.storage.data.ResourceFolderMetadata; +import com.epam.aidial.core.storage.data.ResourceItemMetadata; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.service.ResourceService; import com.fasterxml.jackson.core.type.TypeReference; import org.apache.commons.lang3.tuple.Pair; diff --git a/server/src/main/java/com/epam/aidial/core/server/service/ShareService.java b/server/src/main/java/com/epam/aidial/core/server/service/ShareService.java index 3f64d4ed5..23ccb941e 100644 --- a/server/src/main/java/com/epam/aidial/core/server/service/ShareService.java +++ b/server/src/main/java/com/epam/aidial/core/server/service/ShareService.java @@ -3,10 +3,6 @@ import com.epam.aidial.core.server.data.Invitation; import com.epam.aidial.core.server.data.InvitationLink; import com.epam.aidial.core.server.data.ListSharedResourcesRequest; -import com.epam.aidial.core.server.data.MetadataBase; -import com.epam.aidial.core.server.data.ResourceAccessType; -import com.epam.aidial.core.server.data.ResourceFolderMetadata; -import com.epam.aidial.core.server.data.ResourceItemMetadata; import com.epam.aidial.core.server.data.ResourceLink; import com.epam.aidial.core.server.data.ResourceLinkCollection; import com.epam.aidial.core.server.data.ResourceTypes; @@ -15,11 +11,16 @@ import com.epam.aidial.core.server.data.SharedResource; import com.epam.aidial.core.server.data.SharedResources; import com.epam.aidial.core.server.data.SharedResourcesResponse; -import com.epam.aidial.core.server.resource.ResourceDescriptor; -import com.epam.aidial.core.server.resource.ResourceDescriptorFactory; -import com.epam.aidial.core.server.resource.ResourceType; import com.epam.aidial.core.server.security.EncryptionService; import com.epam.aidial.core.server.util.ProxyUtil; +import com.epam.aidial.core.server.util.ResourceDescriptorFactory; +import com.epam.aidial.core.storage.data.MetadataBase; +import com.epam.aidial.core.storage.data.ResourceAccessType; +import com.epam.aidial.core.storage.data.ResourceFolderMetadata; +import com.epam.aidial.core.storage.data.ResourceItemMetadata; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.resource.ResourceType; +import com.epam.aidial.core.storage.service.ResourceService; import com.google.common.collect.Sets; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/server/src/main/java/com/epam/aidial/core/server/service/VertxTimerService.java b/server/src/main/java/com/epam/aidial/core/server/service/VertxTimerService.java index ed4776c92..c35a87ceb 100644 --- a/server/src/main/java/com/epam/aidial/core/server/service/VertxTimerService.java +++ b/server/src/main/java/com/epam/aidial/core/server/service/VertxTimerService.java @@ -1,5 +1,6 @@ package com.epam.aidial.core.server.service; +import com.epam.aidial.core.storage.service.TimerService; import io.vertx.core.Vertx; public class VertxTimerService implements TimerService { diff --git a/server/src/main/java/com/epam/aidial/core/server/token/TokenStatsTracker.java b/server/src/main/java/com/epam/aidial/core/server/token/TokenStatsTracker.java index e0a950805..d7924a792 100644 --- a/server/src/main/java/com/epam/aidial/core/server/token/TokenStatsTracker.java +++ b/server/src/main/java/com/epam/aidial/core/server/token/TokenStatsTracker.java @@ -3,11 +3,11 @@ import com.epam.aidial.core.server.ProxyContext; import com.epam.aidial.core.server.data.ApiKeyData; import com.epam.aidial.core.server.data.ResourceTypes; -import com.epam.aidial.core.server.resource.ResourceDescriptor; -import com.epam.aidial.core.server.resource.ResourceDescriptorFactory; -import com.epam.aidial.core.server.service.ResourceService; -import com.epam.aidial.core.server.util.EtagHeader; import com.epam.aidial.core.server.util.ProxyUtil; +import com.epam.aidial.core.server.util.ResourceDescriptorFactory; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.service.ResourceService; +import com.epam.aidial.core.storage.util.EtagHeader; import io.vertx.core.Future; import io.vertx.core.Vertx; import lombok.Data; @@ -17,7 +17,7 @@ import java.util.HashMap; import java.util.Map; -import static com.epam.aidial.core.server.resource.ResourceDescriptor.PATH_SEPARATOR; +import static com.epam.aidial.core.storage.resource.ResourceDescriptor.PATH_SEPARATOR; @Slf4j @RequiredArgsConstructor diff --git a/server/src/main/java/com/epam/aidial/core/server/upstream/UpstreamRoute.java b/server/src/main/java/com/epam/aidial/core/server/upstream/UpstreamRoute.java index c2a8072ca..a592d8440 100644 --- a/server/src/main/java/com/epam/aidial/core/server/upstream/UpstreamRoute.java +++ b/server/src/main/java/com/epam/aidial/core/server/upstream/UpstreamRoute.java @@ -1,7 +1,7 @@ package com.epam.aidial.core.server.upstream; import com.epam.aidial.core.config.Upstream; -import com.epam.aidial.core.server.util.HttpStatus; +import com.epam.aidial.core.storage.http.HttpStatus; import io.vertx.core.http.HttpClientResponse; import lombok.extern.slf4j.Slf4j; diff --git a/server/src/main/java/com/epam/aidial/core/server/upstream/UpstreamState.java b/server/src/main/java/com/epam/aidial/core/server/upstream/UpstreamState.java index 548a653eb..fcaffdaa0 100644 --- a/server/src/main/java/com/epam/aidial/core/server/upstream/UpstreamState.java +++ b/server/src/main/java/com/epam/aidial/core/server/upstream/UpstreamState.java @@ -1,7 +1,7 @@ package com.epam.aidial.core.server.upstream; import com.epam.aidial.core.config.Upstream; -import com.epam.aidial.core.server.util.HttpStatus; +import com.epam.aidial.core.storage.http.HttpStatus; import lombok.Getter; import lombok.extern.slf4j.Slf4j; diff --git a/server/src/main/java/com/epam/aidial/core/server/util/ProxyUtil.java b/server/src/main/java/com/epam/aidial/core/server/util/ProxyUtil.java index e333f8e05..82d0ce260 100644 --- a/server/src/main/java/com/epam/aidial/core/server/util/ProxyUtil.java +++ b/server/src/main/java/com/epam/aidial/core/server/util/ProxyUtil.java @@ -1,8 +1,9 @@ package com.epam.aidial.core.server.util; import com.epam.aidial.core.server.Proxy; -import com.epam.aidial.core.server.data.MetadataBase; import com.epam.aidial.core.server.function.BaseRequestFunction; +import com.epam.aidial.core.storage.data.MetadataBase; +import com.epam.aidial.core.storage.util.EtagHeader; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.JsonMappingException; diff --git a/server/src/main/java/com/epam/aidial/core/server/resource/ResourceDescriptorFactory.java b/server/src/main/java/com/epam/aidial/core/server/util/ResourceDescriptorFactory.java similarity index 96% rename from server/src/main/java/com/epam/aidial/core/server/resource/ResourceDescriptorFactory.java rename to server/src/main/java/com/epam/aidial/core/server/util/ResourceDescriptorFactory.java index 7e9f5911c..06374d88d 100644 --- a/server/src/main/java/com/epam/aidial/core/server/resource/ResourceDescriptorFactory.java +++ b/server/src/main/java/com/epam/aidial/core/server/util/ResourceDescriptorFactory.java @@ -1,8 +1,11 @@ -package com.epam.aidial.core.server.resource; +package com.epam.aidial.core.server.util; import com.epam.aidial.core.server.data.ResourceTypes; import com.epam.aidial.core.server.security.EncryptionService; -import com.epam.aidial.core.server.util.UrlUtil; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.resource.ResourceType; +import com.epam.aidial.core.storage.resource.ResourceUtil; +import com.epam.aidial.core.storage.util.UrlUtil; import org.apache.commons.lang3.StringUtils; import java.nio.charset.StandardCharsets; diff --git a/server/src/main/java/com/epam/aidial/core/server/vertx/stream/BlobWriteStream.java b/server/src/main/java/com/epam/aidial/core/server/vertx/stream/BlobWriteStream.java index 3a8e8390f..cb019991d 100644 --- a/server/src/main/java/com/epam/aidial/core/server/vertx/stream/BlobWriteStream.java +++ b/server/src/main/java/com/epam/aidial/core/server/vertx/stream/BlobWriteStream.java @@ -1,12 +1,12 @@ package com.epam.aidial.core.server.vertx.stream; -import com.epam.aidial.core.server.data.FileMetadata; -import com.epam.aidial.core.server.resource.ResourceDescriptor; -import com.epam.aidial.core.server.service.ResourceService; -import com.epam.aidial.core.server.storage.BlobStorage; -import com.epam.aidial.core.server.storage.BlobStorageUtil; -import com.epam.aidial.core.server.util.EtagBuilder; -import com.epam.aidial.core.server.util.EtagHeader; +import com.epam.aidial.core.storage.blobstore.BlobStorage; +import com.epam.aidial.core.storage.blobstore.BlobStorageUtil; +import com.epam.aidial.core.storage.data.FileMetadata; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.service.ResourceService; +import com.epam.aidial.core.storage.util.EtagBuilder; +import com.epam.aidial.core.storage.util.EtagHeader; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufInputStream; import io.vertx.core.AsyncResult; diff --git a/server/src/test/java/com/epam/aidial/core/server/FileApiTest.java b/server/src/test/java/com/epam/aidial/core/server/FileApiTest.java index 1f63cbed8..2677abcb9 100644 --- a/server/src/test/java/com/epam/aidial/core/server/FileApiTest.java +++ b/server/src/test/java/com/epam/aidial/core/server/FileApiTest.java @@ -3,9 +3,9 @@ import com.epam.aidial.core.server.data.ApiKeyData; import com.epam.aidial.core.server.data.AutoSharedData; import com.epam.aidial.core.server.data.Bucket; -import com.epam.aidial.core.server.data.MetadataBase; -import com.epam.aidial.core.server.data.ResourceAccessType; import com.epam.aidial.core.server.vertx.stream.BlobWriteStream; +import com.epam.aidial.core.storage.data.MetadataBase; +import com.epam.aidial.core.storage.data.ResourceAccessType; import io.vertx.core.Future; import io.vertx.core.Promise; import io.vertx.core.Vertx; @@ -27,7 +27,6 @@ import static org.junit.jupiter.api.Assertions.assertArrayEquals; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.assertTrue; @ExtendWith(VertxExtension.class) @Slf4j diff --git a/server/src/test/java/com/epam/aidial/core/server/InvitationApiTest.java b/server/src/test/java/com/epam/aidial/core/server/InvitationApiTest.java index f166d210d..e1da4de84 100644 --- a/server/src/test/java/com/epam/aidial/core/server/InvitationApiTest.java +++ b/server/src/test/java/com/epam/aidial/core/server/InvitationApiTest.java @@ -1,8 +1,8 @@ package com.epam.aidial.core.server; import com.epam.aidial.core.server.data.InvitationLink; -import com.epam.aidial.core.server.resource.ResourceDescriptor; import com.epam.aidial.core.server.util.ProxyUtil; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; import io.vertx.core.http.HttpMethod; import org.junit.jupiter.api.Test; diff --git a/server/src/test/java/com/epam/aidial/core/server/ProxyTest.java b/server/src/test/java/com/epam/aidial/core/server/ProxyTest.java index ecc0a7046..231693da3 100644 --- a/server/src/test/java/com/epam/aidial/core/server/ProxyTest.java +++ b/server/src/test/java/com/epam/aidial/core/server/ProxyTest.java @@ -10,8 +10,8 @@ import com.epam.aidial.core.server.security.AccessTokenValidator; import com.epam.aidial.core.server.security.ApiKeyStore; import com.epam.aidial.core.server.security.ExtractedClaims; -import com.epam.aidial.core.server.storage.BlobStorage; -import com.epam.aidial.core.server.util.HttpException; +import com.epam.aidial.core.storage.blobstore.BlobStorage; +import com.epam.aidial.core.storage.http.HttpException; import io.vertx.core.Future; import io.vertx.core.MultiMap; import io.vertx.core.Vertx; @@ -39,12 +39,12 @@ import static com.epam.aidial.core.server.Proxy.FILES_REQUEST_BODY_MAX_SIZE_BYTES; import static com.epam.aidial.core.server.Proxy.HEADER_API_KEY; import static com.epam.aidial.core.server.Proxy.HEALTH_CHECK_PATH; -import static com.epam.aidial.core.server.util.HttpStatus.BAD_REQUEST; -import static com.epam.aidial.core.server.util.HttpStatus.HTTP_VERSION_NOT_SUPPORTED; -import static com.epam.aidial.core.server.util.HttpStatus.METHOD_NOT_ALLOWED; -import static com.epam.aidial.core.server.util.HttpStatus.OK; -import static com.epam.aidial.core.server.util.HttpStatus.REQUEST_ENTITY_TOO_LARGE; -import static com.epam.aidial.core.server.util.HttpStatus.UNAUTHORIZED; +import static com.epam.aidial.core.storage.http.HttpStatus.BAD_REQUEST; +import static com.epam.aidial.core.storage.http.HttpStatus.HTTP_VERSION_NOT_SUPPORTED; +import static com.epam.aidial.core.storage.http.HttpStatus.METHOD_NOT_ALLOWED; +import static com.epam.aidial.core.storage.http.HttpStatus.OK; +import static com.epam.aidial.core.storage.http.HttpStatus.REQUEST_ENTITY_TOO_LARGE; +import static com.epam.aidial.core.storage.http.HttpStatus.UNAUTHORIZED; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; diff --git a/server/src/test/java/com/epam/aidial/core/server/TestServerStatus429.java b/server/src/test/java/com/epam/aidial/core/server/TestServerStatus429.java index 9d34506da..7caa5f8b9 100644 --- a/server/src/test/java/com/epam/aidial/core/server/TestServerStatus429.java +++ b/server/src/test/java/com/epam/aidial/core/server/TestServerStatus429.java @@ -1,6 +1,6 @@ package com.epam.aidial.core.server; -import com.epam.aidial.core.server.util.HttpStatus; +import com.epam.aidial.core.storage.http.HttpStatus; import io.vertx.core.Vertx; import io.vertx.core.http.HttpServer; diff --git a/server/src/test/java/com/epam/aidial/core/server/controller/AssistantControllerTest.java b/server/src/test/java/com/epam/aidial/core/server/controller/AssistantControllerTest.java index 527163e3a..9da8edce6 100644 --- a/server/src/test/java/com/epam/aidial/core/server/controller/AssistantControllerTest.java +++ b/server/src/test/java/com/epam/aidial/core/server/controller/AssistantControllerTest.java @@ -6,7 +6,7 @@ import com.epam.aidial.core.server.ProxyContext; import com.epam.aidial.core.server.data.AssistantData; import com.epam.aidial.core.server.data.ListData; -import com.epam.aidial.core.server.util.HttpStatus; +import com.epam.aidial.core.storage.http.HttpStatus; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; diff --git a/server/src/test/java/com/epam/aidial/core/server/controller/BucketControllerTest.java b/server/src/test/java/com/epam/aidial/core/server/controller/BucketControllerTest.java index 581122914..db6584469 100644 --- a/server/src/test/java/com/epam/aidial/core/server/controller/BucketControllerTest.java +++ b/server/src/test/java/com/epam/aidial/core/server/controller/BucketControllerTest.java @@ -5,7 +5,7 @@ import com.epam.aidial.core.server.data.ApiKeyData; import com.epam.aidial.core.server.data.Bucket; import com.epam.aidial.core.server.security.EncryptionService; -import com.epam.aidial.core.server.util.HttpStatus; +import com.epam.aidial.core.storage.http.HttpStatus; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; diff --git a/server/src/test/java/com/epam/aidial/core/server/controller/DeploymentPostControllerTest.java b/server/src/test/java/com/epam/aidial/core/server/controller/DeploymentPostControllerTest.java index 70a1ddbbb..519e36dec 100644 --- a/server/src/test/java/com/epam/aidial/core/server/controller/DeploymentPostControllerTest.java +++ b/server/src/test/java/com/epam/aidial/core/server/controller/DeploymentPostControllerTest.java @@ -16,9 +16,9 @@ import com.epam.aidial.core.server.upstream.UpstreamProvider; import com.epam.aidial.core.server.upstream.UpstreamRoute; import com.epam.aidial.core.server.upstream.UpstreamRouteProvider; -import com.epam.aidial.core.server.util.HttpStatus; import com.epam.aidial.core.server.util.ProxyUtil; import com.epam.aidial.core.server.vertx.stream.BufferingReadStream; +import com.epam.aidial.core.storage.http.HttpStatus; import com.fasterxml.jackson.databind.node.ObjectNode; import io.vertx.core.Future; import io.vertx.core.MultiMap; @@ -44,10 +44,10 @@ import static com.epam.aidial.core.server.Proxy.HEADER_API_KEY; import static com.epam.aidial.core.server.Proxy.HEADER_CONTENT_TYPE_APPLICATION_JSON; -import static com.epam.aidial.core.server.util.HttpStatus.BAD_GATEWAY; -import static com.epam.aidial.core.server.util.HttpStatus.FORBIDDEN; -import static com.epam.aidial.core.server.util.HttpStatus.NOT_FOUND; -import static com.epam.aidial.core.server.util.HttpStatus.UNSUPPORTED_MEDIA_TYPE; +import static com.epam.aidial.core.storage.http.HttpStatus.BAD_GATEWAY; +import static com.epam.aidial.core.storage.http.HttpStatus.FORBIDDEN; +import static com.epam.aidial.core.storage.http.HttpStatus.NOT_FOUND; +import static com.epam.aidial.core.storage.http.HttpStatus.UNSUPPORTED_MEDIA_TYPE; import static io.vertx.core.http.HttpHeaders.AUTHORIZATION; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; diff --git a/server/src/test/java/com/epam/aidial/core/server/limiter/RateLimiterTest.java b/server/src/test/java/com/epam/aidial/core/server/limiter/RateLimiterTest.java index 319dfa671..3a7b9b547 100644 --- a/server/src/test/java/com/epam/aidial/core/server/limiter/RateLimiterTest.java +++ b/server/src/test/java/com/epam/aidial/core/server/limiter/RateLimiterTest.java @@ -10,17 +10,15 @@ import com.epam.aidial.core.server.data.LimitStats; import com.epam.aidial.core.server.security.EncryptionService; import com.epam.aidial.core.server.security.ExtractedClaims; -import com.epam.aidial.core.server.service.LockService; -import com.epam.aidial.core.server.service.ResourceService; -import com.epam.aidial.core.server.service.TimerService; -import com.epam.aidial.core.server.storage.BlobStorage; import com.epam.aidial.core.server.token.TokenUsage; -import com.epam.aidial.core.server.util.HttpStatus; -import com.epam.aidial.core.server.util.ProxyUtil; +import com.epam.aidial.core.storage.blobstore.BlobStorage; +import com.epam.aidial.core.storage.http.HttpStatus; +import com.epam.aidial.core.storage.service.LockService; +import com.epam.aidial.core.storage.service.ResourceService; +import com.epam.aidial.core.storage.service.TimerService; import io.vertx.core.Future; import io.vertx.core.Vertx; import io.vertx.core.http.HttpServerRequest; -import io.vertx.core.json.JsonObject; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; diff --git a/server/src/test/java/com/epam/aidial/core/server/security/ApiKeyStoreTest.java b/server/src/test/java/com/epam/aidial/core/server/security/ApiKeyStoreTest.java index 282f26fc2..1d291a26b 100644 --- a/server/src/test/java/com/epam/aidial/core/server/security/ApiKeyStoreTest.java +++ b/server/src/test/java/com/epam/aidial/core/server/security/ApiKeyStoreTest.java @@ -3,15 +3,14 @@ import com.epam.aidial.core.config.Key; import com.epam.aidial.core.server.data.ApiKeyData; import com.epam.aidial.core.server.data.AutoSharedData; -import com.epam.aidial.core.server.data.ResourceAccessType; -import com.epam.aidial.core.server.service.LockService; -import com.epam.aidial.core.server.service.ResourceService; -import com.epam.aidial.core.server.service.TimerService; -import com.epam.aidial.core.server.storage.BlobStorage; import com.epam.aidial.core.server.util.ProxyUtil; +import com.epam.aidial.core.storage.blobstore.BlobStorage; +import com.epam.aidial.core.storage.data.ResourceAccessType; +import com.epam.aidial.core.storage.service.LockService; +import com.epam.aidial.core.storage.service.ResourceService; +import com.epam.aidial.core.storage.service.TimerService; import io.vertx.core.Future; import io.vertx.core.Vertx; -import io.vertx.core.json.JsonObject; import org.apache.commons.lang3.mutable.MutableObject; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; diff --git a/server/src/test/java/com/epam/aidial/core/server/service/PublicationUtilTest.java b/server/src/test/java/com/epam/aidial/core/server/service/PublicationUtilTest.java index c0cd06a01..50e73c756 100644 --- a/server/src/test/java/com/epam/aidial/core/server/service/PublicationUtilTest.java +++ b/server/src/test/java/com/epam/aidial/core/server/service/PublicationUtilTest.java @@ -2,9 +2,9 @@ import com.epam.aidial.core.server.ResourceBaseTest; import com.epam.aidial.core.server.data.ResourceTypes; -import com.epam.aidial.core.server.resource.ResourceDescriptor; -import com.epam.aidial.core.server.resource.ResourceDescriptorFactory; import com.epam.aidial.core.server.util.ProxyUtil; +import com.epam.aidial.core.server.util.ResourceDescriptorFactory; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; import com.fasterxml.jackson.core.JsonProcessingException; import org.junit.jupiter.api.Test; diff --git a/server/src/test/java/com/epam/aidial/core/server/token/TokenStatsTrackerTest.java b/server/src/test/java/com/epam/aidial/core/server/token/TokenStatsTrackerTest.java index 7b4205a61..31e84ac23 100644 --- a/server/src/test/java/com/epam/aidial/core/server/token/TokenStatsTrackerTest.java +++ b/server/src/test/java/com/epam/aidial/core/server/token/TokenStatsTrackerTest.java @@ -3,10 +3,10 @@ import com.epam.aidial.core.server.ProxyContext; import com.epam.aidial.core.server.data.ApiKeyData; import com.epam.aidial.core.server.security.EncryptionService; -import com.epam.aidial.core.server.service.LockService; -import com.epam.aidial.core.server.service.ResourceService; -import com.epam.aidial.core.server.service.TimerService; -import com.epam.aidial.core.server.storage.BlobStorage; +import com.epam.aidial.core.storage.blobstore.BlobStorage; +import com.epam.aidial.core.storage.service.LockService; +import com.epam.aidial.core.storage.service.ResourceService; +import com.epam.aidial.core.storage.service.TimerService; import io.vertx.core.Future; import io.vertx.core.Vertx; import org.junit.jupiter.api.AfterAll; diff --git a/server/src/test/java/com/epam/aidial/core/server/upstream/LoadBalancerTest.java b/server/src/test/java/com/epam/aidial/core/server/upstream/LoadBalancerTest.java index e44d79a58..1865914eb 100644 --- a/server/src/test/java/com/epam/aidial/core/server/upstream/LoadBalancerTest.java +++ b/server/src/test/java/com/epam/aidial/core/server/upstream/LoadBalancerTest.java @@ -3,7 +3,7 @@ import com.epam.aidial.core.config.Config; import com.epam.aidial.core.config.Model; import com.epam.aidial.core.config.Upstream; -import com.epam.aidial.core.server.util.HttpStatus; +import com.epam.aidial.core.storage.http.HttpStatus; import org.apache.commons.lang3.mutable.MutableInt; import org.junit.jupiter.api.Test; diff --git a/server/src/test/java/com/epam/aidial/core/server/upstream/UpstreamRouteTest.java b/server/src/test/java/com/epam/aidial/core/server/upstream/UpstreamRouteTest.java index 96e3968ba..1d1cda6b0 100644 --- a/server/src/test/java/com/epam/aidial/core/server/upstream/UpstreamRouteTest.java +++ b/server/src/test/java/com/epam/aidial/core/server/upstream/UpstreamRouteTest.java @@ -2,7 +2,7 @@ import com.epam.aidial.core.config.Model; import com.epam.aidial.core.config.Upstream; -import com.epam.aidial.core.server.util.HttpStatus; +import com.epam.aidial.core.storage.http.HttpStatus; import org.junit.jupiter.api.Test; import java.util.List; diff --git a/server/src/test/java/com/epam/aidial/core/server/util/ProxyUtilTest.java b/server/src/test/java/com/epam/aidial/core/server/util/ProxyUtilTest.java index f2aad858e..6d6000c06 100644 --- a/server/src/test/java/com/epam/aidial/core/server/util/ProxyUtilTest.java +++ b/server/src/test/java/com/epam/aidial/core/server/util/ProxyUtilTest.java @@ -4,7 +4,7 @@ import com.epam.aidial.core.server.data.AutoSharedData; import com.epam.aidial.core.server.data.Conversation; import com.epam.aidial.core.server.data.Prompt; -import com.epam.aidial.core.server.data.ResourceAccessType; +import com.epam.aidial.core.storage.data.ResourceAccessType; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.node.ObjectNode; import org.junit.jupiter.api.Test; diff --git a/server/src/test/java/com/epam/aidial/core/server/resource/ResourceDescriptorFactoryTest.java b/server/src/test/java/com/epam/aidial/core/server/util/ResourceDescriptorFactoryTest.java similarity index 90% rename from server/src/test/java/com/epam/aidial/core/server/resource/ResourceDescriptorFactoryTest.java rename to server/src/test/java/com/epam/aidial/core/server/util/ResourceDescriptorFactoryTest.java index b920cac04..0c13773e3 100644 --- a/server/src/test/java/com/epam/aidial/core/server/resource/ResourceDescriptorFactoryTest.java +++ b/server/src/test/java/com/epam/aidial/core/server/util/ResourceDescriptorFactoryTest.java @@ -1,7 +1,8 @@ -package com.epam.aidial.core.server.resource; +package com.epam.aidial.core.server.util; import com.epam.aidial.core.server.data.ResourceTypes; import com.epam.aidial.core.server.security.EncryptionService; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; import io.vertx.core.json.JsonObject; import org.junit.jupiter.api.Test; @@ -200,12 +201,12 @@ public void testFromAnyUrl_File() { String bucketLocation = "Users/user1/"; String bucketName = service.encrypt(bucketLocation); ResourceDescriptor resourceDescriptor = ResourceDescriptorFactory.fromAnyUrl(ResourceTypes.FILE.group() + "/" + bucketName + "/my/folder/file.txt", service); - assertEquals(bucketName, resourceDescriptor.bucketName); - assertEquals(bucketLocation, resourceDescriptor.bucketLocation); - assertEquals("file.txt", resourceDescriptor.name); - assertEquals(List.of("my", "folder"), resourceDescriptor.parentFolders); - assertEquals(ResourceTypes.FILE, resourceDescriptor.type); - assertFalse(resourceDescriptor.isFolder); + assertEquals(bucketName, resourceDescriptor.getBucketName()); + assertEquals(bucketLocation, resourceDescriptor.getBucketLocation()); + assertEquals("file.txt", resourceDescriptor.getName()); + assertEquals(List.of("my", "folder"), resourceDescriptor.getParentFolders()); + assertEquals(ResourceTypes.FILE, resourceDescriptor.getType()); + assertFalse(resourceDescriptor.isFolder()); } @@ -218,12 +219,12 @@ public void testFromAnyUrl_Folder() { String bucketLocation = "Users/user1/"; String bucketName = service.encrypt(bucketLocation); ResourceDescriptor resourceDescriptor = ResourceDescriptorFactory.fromAnyUrl(ResourceTypes.FILE.group() + "/" + bucketName + "/my/folder/", service); - assertEquals(bucketName, resourceDescriptor.bucketName); - assertEquals(bucketLocation, resourceDescriptor.bucketLocation); - assertEquals("folder", resourceDescriptor.name); - assertEquals(List.of("my"), resourceDescriptor.parentFolders); - assertEquals(ResourceTypes.FILE, resourceDescriptor.type); - assertTrue(resourceDescriptor.isFolder); + assertEquals(bucketName, resourceDescriptor.getBucketName()); + assertEquals(bucketLocation, resourceDescriptor.getBucketLocation()); + assertEquals("folder", resourceDescriptor.getName()); + assertEquals(List.of("my"), resourceDescriptor.getParentFolders()); + assertEquals(ResourceTypes.FILE, resourceDescriptor.getType()); + assertTrue(resourceDescriptor.isFolder()); } @@ -236,12 +237,12 @@ public void testFromAnyUrl_RootFolder() { String bucketLocation = "Users/user1/"; String bucketName = service.encrypt(bucketLocation); ResourceDescriptor resourceDescriptor = ResourceDescriptorFactory.fromAnyUrl(ResourceTypes.FILE.group() + "/" + bucketName + "/", service); - assertEquals(bucketName, resourceDescriptor.bucketName); - assertEquals(bucketLocation, resourceDescriptor.bucketLocation); - assertNull(resourceDescriptor.name); - assertEquals(List.of(), resourceDescriptor.parentFolders); - assertEquals(ResourceTypes.FILE, resourceDescriptor.type); - assertTrue(resourceDescriptor.isFolder); + assertEquals(bucketName, resourceDescriptor.getBucketName()); + assertEquals(bucketLocation, resourceDescriptor.getBucketLocation()); + assertNull(resourceDescriptor.getName()); + assertEquals(List.of(), resourceDescriptor.getParentFolders()); + assertEquals(ResourceTypes.FILE, resourceDescriptor.getType()); + assertTrue(resourceDescriptor.isFolder()); } } diff --git a/settings.gradle b/settings.gradle index 13f2c2748..bcc7fb385 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,4 +1,5 @@ rootProject.name = "aidial-core" include 'config' include 'server' +include 'storage' diff --git a/storage/.gitignore b/storage/.gitignore new file mode 100644 index 000000000..b63da4551 --- /dev/null +++ b/storage/.gitignore @@ -0,0 +1,42 @@ +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/storage/build.gradle b/storage/build.gradle new file mode 100644 index 000000000..cf69a517e --- /dev/null +++ b/storage/build.gradle @@ -0,0 +1,36 @@ +configurations.all { + resolutionStrategy { + force 'com.google.code.gson:gson:2.8.9' + } +} + +dependencies { + + implementation 'com.google.protobuf:protobuf-java:3.25.5' + implementation 'org.slf4j:slf4j-api:1.7.32' + implementation 'org.apache.commons:commons-lang3:3.12.0' + implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.2' + implementation 'org.apache.jclouds:jclouds-allblobstore:2.5.0' + implementation 'org.apache.jclouds.api:filesystem:2.5.0' + implementation 'org.redisson:redisson:3.27.0' + implementation group: 'com.amazonaws', name: 'aws-java-sdk-core', version: '1.12.663' + implementation group: 'com.amazonaws', name: 'aws-java-sdk-sts', version: '1.12.663' + implementation group: 'com.google.auth', name: 'google-auth-library-oauth2-http', version: '1.23.0' + implementation group: 'com.azure', name: 'azure-identity', version: '1.13.2' + + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.3' + testImplementation 'org.mockito:mockito-core:5.7.0' + testImplementation 'org.mockito:mockito-junit-jupiter:5.7.0' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.3' + testImplementation('com.github.codemonstur:embedded-redis:1.4.3') { + exclude group: 'org.slf4j', module: 'slf4j-simple' + } +} + +test { + testLogging { + events "passed", "skipped", "failed", "standardOut", "standardError" + exceptionFormat = "full" + } + useJUnitPlatform() +} diff --git a/server/src/main/java/com/epam/aidial/core/server/storage/BlobStorage.java b/storage/src/main/java/com/epam/aidial/core/storage/blobstore/BlobStorage.java similarity index 97% rename from server/src/main/java/com/epam/aidial/core/server/storage/BlobStorage.java rename to storage/src/main/java/com/epam/aidial/core/storage/blobstore/BlobStorage.java index 0db17dc1b..0cc36d2c2 100644 --- a/server/src/main/java/com/epam/aidial/core/server/storage/BlobStorage.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/blobstore/BlobStorage.java @@ -1,8 +1,8 @@ -package com.epam.aidial.core.server.storage; +package com.epam.aidial.core.storage.blobstore; -import com.epam.aidial.core.server.resource.ResourceDescriptor; -import com.epam.aidial.core.server.storage.credential.CredentialProvider; -import com.epam.aidial.core.server.storage.credential.CredentialProviderFactory; +import com.epam.aidial.core.storage.blobstore.credential.CredentialProvider; +import com.epam.aidial.core.storage.blobstore.credential.CredentialProviderFactory; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.jclouds.ContextBuilder; diff --git a/server/src/main/java/com/epam/aidial/core/server/storage/BlobStorageUtil.java b/storage/src/main/java/com/epam/aidial/core/storage/blobstore/BlobStorageUtil.java similarity index 85% rename from server/src/main/java/com/epam/aidial/core/server/storage/BlobStorageUtil.java rename to storage/src/main/java/com/epam/aidial/core/storage/blobstore/BlobStorageUtil.java index 5d4a8ca3e..e7655a624 100644 --- a/server/src/main/java/com/epam/aidial/core/server/storage/BlobStorageUtil.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/blobstore/BlobStorageUtil.java @@ -1,6 +1,6 @@ -package com.epam.aidial.core.server.storage; +package com.epam.aidial.core.storage.blobstore; -import com.epam.aidial.core.server.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; import lombok.SneakyThrows; import lombok.experimental.UtilityClass; diff --git a/server/src/main/java/com/epam/aidial/core/server/storage/Storage.java b/storage/src/main/java/com/epam/aidial/core/storage/blobstore/Storage.java similarity index 96% rename from server/src/main/java/com/epam/aidial/core/server/storage/Storage.java rename to storage/src/main/java/com/epam/aidial/core/storage/blobstore/Storage.java index c2f46958b..05c952a30 100644 --- a/server/src/main/java/com/epam/aidial/core/server/storage/Storage.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/blobstore/Storage.java @@ -1,4 +1,4 @@ -package com.epam.aidial.core.server.storage; +package com.epam.aidial.core.storage.blobstore; import lombok.Data; diff --git a/server/src/main/java/com/epam/aidial/core/server/storage/StorageProvider.java b/storage/src/main/java/com/epam/aidial/core/storage/blobstore/StorageProvider.java similarity index 91% rename from server/src/main/java/com/epam/aidial/core/server/storage/StorageProvider.java rename to storage/src/main/java/com/epam/aidial/core/storage/blobstore/StorageProvider.java index 8ffd633e4..a5e1875af 100644 --- a/server/src/main/java/com/epam/aidial/core/server/storage/StorageProvider.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/blobstore/StorageProvider.java @@ -1,4 +1,4 @@ -package com.epam.aidial.core.server.storage; +package com.epam.aidial.core.storage.blobstore; public enum StorageProvider { S3, AWS_S3, FILESYSTEM, GOOGLE_CLOUD_STORAGE, AZURE_BLOB; diff --git a/server/src/main/java/com/epam/aidial/core/server/storage/credential/AwsCredentialProvider.java b/storage/src/main/java/com/epam/aidial/core/storage/blobstore/credential/AwsCredentialProvider.java similarity index 96% rename from server/src/main/java/com/epam/aidial/core/server/storage/credential/AwsCredentialProvider.java rename to storage/src/main/java/com/epam/aidial/core/storage/blobstore/credential/AwsCredentialProvider.java index 5351f1be2..3c2312d56 100644 --- a/server/src/main/java/com/epam/aidial/core/server/storage/credential/AwsCredentialProvider.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/blobstore/credential/AwsCredentialProvider.java @@ -1,4 +1,4 @@ -package com.epam.aidial.core.server.storage.credential; +package com.epam.aidial.core.storage.blobstore.credential; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.AWSSessionCredentials; diff --git a/server/src/main/java/com/epam/aidial/core/server/storage/credential/AzureCredentialProvider.java b/storage/src/main/java/com/epam/aidial/core/storage/blobstore/credential/AzureCredentialProvider.java similarity index 96% rename from server/src/main/java/com/epam/aidial/core/server/storage/credential/AzureCredentialProvider.java rename to storage/src/main/java/com/epam/aidial/core/storage/blobstore/credential/AzureCredentialProvider.java index cc5721bf9..da674c9e3 100644 --- a/server/src/main/java/com/epam/aidial/core/server/storage/credential/AzureCredentialProvider.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/blobstore/credential/AzureCredentialProvider.java @@ -1,4 +1,4 @@ -package com.epam.aidial.core.server.storage.credential; +package com.epam.aidial.core.storage.blobstore.credential; import com.azure.core.credential.AccessToken; import com.azure.core.credential.TokenRequestContext; diff --git a/server/src/main/java/com/epam/aidial/core/server/storage/credential/CredentialProvider.java b/storage/src/main/java/com/epam/aidial/core/storage/blobstore/credential/CredentialProvider.java similarity index 66% rename from server/src/main/java/com/epam/aidial/core/server/storage/credential/CredentialProvider.java rename to storage/src/main/java/com/epam/aidial/core/storage/blobstore/credential/CredentialProvider.java index b038af168..6ff6bdb9f 100644 --- a/server/src/main/java/com/epam/aidial/core/server/storage/credential/CredentialProvider.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/blobstore/credential/CredentialProvider.java @@ -1,4 +1,4 @@ -package com.epam.aidial.core.server.storage.credential; +package com.epam.aidial.core.storage.blobstore.credential; import org.jclouds.domain.Credentials; diff --git a/server/src/main/java/com/epam/aidial/core/server/storage/credential/CredentialProviderFactory.java b/storage/src/main/java/com/epam/aidial/core/storage/blobstore/credential/CredentialProviderFactory.java similarity index 85% rename from server/src/main/java/com/epam/aidial/core/server/storage/credential/CredentialProviderFactory.java rename to storage/src/main/java/com/epam/aidial/core/storage/blobstore/credential/CredentialProviderFactory.java index 47d24536e..777423427 100644 --- a/server/src/main/java/com/epam/aidial/core/server/storage/credential/CredentialProviderFactory.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/blobstore/credential/CredentialProviderFactory.java @@ -1,6 +1,6 @@ -package com.epam.aidial.core.server.storage.credential; +package com.epam.aidial.core.storage.blobstore.credential; -import com.epam.aidial.core.server.storage.StorageProvider; +import com.epam.aidial.core.storage.blobstore.StorageProvider; import lombok.experimental.UtilityClass; @UtilityClass diff --git a/server/src/main/java/com/epam/aidial/core/server/storage/credential/DefaultCredentialProvider.java b/storage/src/main/java/com/epam/aidial/core/storage/blobstore/credential/DefaultCredentialProvider.java similarity index 88% rename from server/src/main/java/com/epam/aidial/core/server/storage/credential/DefaultCredentialProvider.java rename to storage/src/main/java/com/epam/aidial/core/storage/blobstore/credential/DefaultCredentialProvider.java index d8207067a..92c2152f0 100644 --- a/server/src/main/java/com/epam/aidial/core/server/storage/credential/DefaultCredentialProvider.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/blobstore/credential/DefaultCredentialProvider.java @@ -1,4 +1,4 @@ -package com.epam.aidial.core.server.storage.credential; +package com.epam.aidial.core.storage.blobstore.credential; import org.jclouds.domain.Credentials; diff --git a/server/src/main/java/com/epam/aidial/core/server/storage/credential/GcpCredentialProvider.java b/storage/src/main/java/com/epam/aidial/core/storage/blobstore/credential/GcpCredentialProvider.java similarity index 97% rename from server/src/main/java/com/epam/aidial/core/server/storage/credential/GcpCredentialProvider.java rename to storage/src/main/java/com/epam/aidial/core/storage/blobstore/credential/GcpCredentialProvider.java index e64568318..0540234a6 100644 --- a/server/src/main/java/com/epam/aidial/core/server/storage/credential/GcpCredentialProvider.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/blobstore/credential/GcpCredentialProvider.java @@ -1,4 +1,4 @@ -package com.epam.aidial.core.server.storage.credential; +package com.epam.aidial.core.storage.blobstore.credential; import com.google.auth.oauth2.AccessToken; import com.google.auth.oauth2.GoogleCredentials; diff --git a/server/src/main/java/com/epam/aidial/core/server/cache/AwsCredentialsResolver.java b/storage/src/main/java/com/epam/aidial/core/storage/cache/AwsCredentialsResolver.java similarity index 97% rename from server/src/main/java/com/epam/aidial/core/server/cache/AwsCredentialsResolver.java rename to storage/src/main/java/com/epam/aidial/core/storage/cache/AwsCredentialsResolver.java index 7f55ec2fa..6127c451c 100644 --- a/server/src/main/java/com/epam/aidial/core/server/cache/AwsCredentialsResolver.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/cache/AwsCredentialsResolver.java @@ -1,4 +1,4 @@ -package com.epam.aidial.core.server.cache; +package com.epam.aidial.core.storage.cache; import com.amazonaws.auth.AWSCredentialsProvider; import org.redisson.config.Credentials; diff --git a/server/src/main/java/com/epam/aidial/core/server/cache/CacheClientFactory.java b/storage/src/main/java/com/epam/aidial/core/storage/cache/CacheClientFactory.java similarity index 77% rename from server/src/main/java/com/epam/aidial/core/server/cache/CacheClientFactory.java rename to storage/src/main/java/com/epam/aidial/core/storage/cache/CacheClientFactory.java index cb506042d..8ef8bac69 100644 --- a/server/src/main/java/com/epam/aidial/core/server/cache/CacheClientFactory.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/cache/CacheClientFactory.java @@ -1,8 +1,8 @@ -package com.epam.aidial.core.server.cache; +package com.epam.aidial.core.storage.cache; import com.amazonaws.auth.AWSCredentialsProvider; import com.amazonaws.auth.DefaultAWSCredentialsProviderChain; -import io.vertx.core.json.JsonObject; +import com.fasterxml.jackson.databind.JsonNode; import lombok.SneakyThrows; import lombok.experimental.UtilityClass; import org.redisson.Redisson; @@ -16,15 +16,15 @@ @UtilityClass public class CacheClientFactory { @SneakyThrows - public RedissonClient create(JsonObject conf) { + public RedissonClient create(JsonNode conf) { if (conf.isEmpty()) { throw new IllegalArgumentException("Redis configuration not found"); } - JsonObject providerSettings = conf.getJsonObject("provider"); + JsonNode providerSettings = conf.get("provider"); CacheProvider provider = null; if (providerSettings != null) { - provider = CacheProvider.from(providerSettings.getString("name")); + provider = CacheProvider.from(providerSettings.get("name").asText()); } CredentialsResolver credentialsResolver = null; if (provider == CacheProvider.AWS_ELASTI_CACHE) { @@ -43,13 +43,14 @@ public RedissonClient create(JsonObject conf) { return Redisson.create(config); } - private CredentialsResolver createElastiCacheCredResolver(JsonObject providerSettings) { - String userId = Objects.requireNonNull(providerSettings.getString("userId"), "AIM user must be provided"); - String region = Objects.requireNonNull(providerSettings.getString("region"), "AWS region ID must be provided"); - String clusterName = Objects.requireNonNull(providerSettings.getString("clusterName"), "Redis cluster name must be provided"); - boolean serverless = Objects.requireNonNull(providerSettings.getBoolean("serverless"), "Serverless flag must be provided"); + private CredentialsResolver createElastiCacheCredResolver(JsonNode providerSettings) { + String userId = Objects.requireNonNull(providerSettings.get("userId"), "AIM user must be provided").asText(); + String region = Objects.requireNonNull(providerSettings.get("region"), "AWS region ID must be provided").asText(); + String clusterName = Objects.requireNonNull(providerSettings.get("clusterName"), "Redis cluster name must be provided").asText(); + boolean serverless = Objects.requireNonNull(providerSettings.get("serverless"), "Serverless flag must be provided").asBoolean(); IamAuthTokenRequest iamAuthTokenRequest = new IamAuthTokenRequest(userId, clusterName, region, serverless); AWSCredentialsProvider awsCredentialsProvider = new DefaultAWSCredentialsProviderChain(); return new AwsCredentialsResolver(userId, iamAuthTokenRequest, awsCredentialsProvider); } + } diff --git a/server/src/main/java/com/epam/aidial/core/server/cache/CacheProvider.java b/storage/src/main/java/com/epam/aidial/core/storage/cache/CacheProvider.java similarity index 87% rename from server/src/main/java/com/epam/aidial/core/server/cache/CacheProvider.java rename to storage/src/main/java/com/epam/aidial/core/storage/cache/CacheProvider.java index 6dbaade53..11a1583c1 100644 --- a/server/src/main/java/com/epam/aidial/core/server/cache/CacheProvider.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/cache/CacheProvider.java @@ -1,4 +1,4 @@ -package com.epam.aidial.core.server.cache; +package com.epam.aidial.core.storage.cache; public enum CacheProvider { AWS_ELASTI_CACHE; diff --git a/server/src/main/java/com/epam/aidial/core/server/cache/IamAuthTokenRequest.java b/storage/src/main/java/com/epam/aidial/core/storage/cache/IamAuthTokenRequest.java similarity index 98% rename from server/src/main/java/com/epam/aidial/core/server/cache/IamAuthTokenRequest.java rename to storage/src/main/java/com/epam/aidial/core/storage/cache/IamAuthTokenRequest.java index 36a133380..a23f1d11d 100644 --- a/server/src/main/java/com/epam/aidial/core/server/cache/IamAuthTokenRequest.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/cache/IamAuthTokenRequest.java @@ -1,4 +1,4 @@ -package com.epam.aidial.core.server.cache; +package com.epam.aidial.core.storage.cache; import com.amazonaws.DefaultRequest; import com.amazonaws.Request; diff --git a/server/src/main/java/com/epam/aidial/core/server/cache/RedisConfigSupport.java b/storage/src/main/java/com/epam/aidial/core/storage/cache/RedisConfigSupport.java similarity index 87% rename from server/src/main/java/com/epam/aidial/core/server/cache/RedisConfigSupport.java rename to storage/src/main/java/com/epam/aidial/core/storage/cache/RedisConfigSupport.java index c46637583..7b378329f 100644 --- a/server/src/main/java/com/epam/aidial/core/server/cache/RedisConfigSupport.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/cache/RedisConfigSupport.java @@ -1,4 +1,4 @@ -package com.epam.aidial.core.server.cache; +package com.epam.aidial.core.storage.cache; import com.fasterxml.jackson.databind.DeserializationFeature; import org.redisson.config.ConfigSupport; diff --git a/server/src/main/java/com/epam/aidial/core/server/data/FileMetadata.java b/storage/src/main/java/com/epam/aidial/core/storage/data/FileMetadata.java similarity index 53% rename from server/src/main/java/com/epam/aidial/core/server/data/FileMetadata.java rename to storage/src/main/java/com/epam/aidial/core/storage/data/FileMetadata.java index d2f44e959..7fafb2bd6 100644 --- a/server/src/main/java/com/epam/aidial/core/server/data/FileMetadata.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/data/FileMetadata.java @@ -1,6 +1,6 @@ -package com.epam.aidial.core.server.data; +package com.epam.aidial.core.storage.data; -import com.epam.aidial.core.server.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @@ -12,12 +12,6 @@ public class FileMetadata extends ResourceItemMetadata { long contentLength; String contentType; - public FileMetadata(String bucket, String name, String path, String url, long contentLength, String contentType) { - super(ResourceTypes.FILE, bucket, name, path, url); - this.contentLength = contentLength; - this.contentType = contentType; - } - public FileMetadata(ResourceDescriptor resource, long contentLength, String contentType) { super(resource); this.contentLength = contentLength; diff --git a/server/src/main/java/com/epam/aidial/core/server/data/MetadataBase.java b/storage/src/main/java/com/epam/aidial/core/storage/data/MetadataBase.java similarity index 86% rename from server/src/main/java/com/epam/aidial/core/server/data/MetadataBase.java rename to storage/src/main/java/com/epam/aidial/core/storage/data/MetadataBase.java index fcab98087..ebdaa4697 100644 --- a/server/src/main/java/com/epam/aidial/core/server/data/MetadataBase.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/data/MetadataBase.java @@ -1,6 +1,6 @@ -package com.epam.aidial.core.server.data; +package com.epam.aidial.core.storage.data; -import com.epam.aidial.core.server.resource.ResourceType; +import com.epam.aidial.core.storage.resource.ResourceType; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/server/src/main/java/com/epam/aidial/core/server/data/NodeType.java b/storage/src/main/java/com/epam/aidial/core/storage/data/NodeType.java similarity index 50% rename from server/src/main/java/com/epam/aidial/core/server/data/NodeType.java rename to storage/src/main/java/com/epam/aidial/core/storage/data/NodeType.java index 3ab514d01..8568a03c5 100644 --- a/server/src/main/java/com/epam/aidial/core/server/data/NodeType.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/data/NodeType.java @@ -1,4 +1,4 @@ -package com.epam.aidial.core.server.data; +package com.epam.aidial.core.storage.data; public enum NodeType { ITEM, FOLDER diff --git a/server/src/main/java/com/epam/aidial/core/server/data/ResourceAccessType.java b/storage/src/main/java/com/epam/aidial/core/storage/data/ResourceAccessType.java similarity index 90% rename from server/src/main/java/com/epam/aidial/core/server/data/ResourceAccessType.java rename to storage/src/main/java/com/epam/aidial/core/storage/data/ResourceAccessType.java index 7f17af39f..b53bc9ac7 100644 --- a/server/src/main/java/com/epam/aidial/core/server/data/ResourceAccessType.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/data/ResourceAccessType.java @@ -1,4 +1,4 @@ -package com.epam.aidial.core.server.data; +package com.epam.aidial.core.storage.data; import java.util.Collections; import java.util.EnumSet; diff --git a/server/src/main/java/com/epam/aidial/core/server/data/ResourceEvent.java b/storage/src/main/java/com/epam/aidial/core/storage/data/ResourceEvent.java similarity index 89% rename from server/src/main/java/com/epam/aidial/core/server/data/ResourceEvent.java rename to storage/src/main/java/com/epam/aidial/core/storage/data/ResourceEvent.java index 6558d2580..707f0f150 100644 --- a/server/src/main/java/com/epam/aidial/core/server/data/ResourceEvent.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/data/ResourceEvent.java @@ -1,4 +1,4 @@ -package com.epam.aidial.core.server.data; +package com.epam.aidial.core.storage.data; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Data; diff --git a/server/src/main/java/com/epam/aidial/core/server/data/ResourceFolderMetadata.java b/storage/src/main/java/com/epam/aidial/core/storage/data/ResourceFolderMetadata.java similarity index 80% rename from server/src/main/java/com/epam/aidial/core/server/data/ResourceFolderMetadata.java rename to storage/src/main/java/com/epam/aidial/core/storage/data/ResourceFolderMetadata.java index 276bebbd2..fdacc69a2 100644 --- a/server/src/main/java/com/epam/aidial/core/server/data/ResourceFolderMetadata.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/data/ResourceFolderMetadata.java @@ -1,7 +1,7 @@ -package com.epam.aidial.core.server.data; +package com.epam.aidial.core.storage.data; -import com.epam.aidial.core.server.resource.ResourceDescriptor; -import com.epam.aidial.core.server.resource.ResourceType; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.resource.ResourceType; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Getter; import lombok.NoArgsConstructor; @@ -25,7 +25,7 @@ public ResourceFolderMetadata(ResourceType type, String bucket, String name, Str this.items = items; } - public ResourceFolderMetadata(ResourceTypes type, String bucket, String name, String path, String url) { + public ResourceFolderMetadata(ResourceType type, String bucket, String name, String path, String url) { this(type, bucket, name, path, url, null); } diff --git a/server/src/main/java/com/epam/aidial/core/server/data/ResourceItemMetadata.java b/storage/src/main/java/com/epam/aidial/core/storage/data/ResourceItemMetadata.java similarity index 84% rename from server/src/main/java/com/epam/aidial/core/server/data/ResourceItemMetadata.java rename to storage/src/main/java/com/epam/aidial/core/storage/data/ResourceItemMetadata.java index aa2515b69..6859f5c7c 100644 --- a/server/src/main/java/com/epam/aidial/core/server/data/ResourceItemMetadata.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/data/ResourceItemMetadata.java @@ -1,7 +1,7 @@ -package com.epam.aidial.core.server.data; +package com.epam.aidial.core.storage.data; -import com.epam.aidial.core.server.resource.ResourceDescriptor; -import com.epam.aidial.core.server.resource.ResourceType; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.resource.ResourceType; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/server/src/main/java/com/epam/aidial/core/server/util/HttpException.java b/storage/src/main/java/com/epam/aidial/core/storage/http/HttpException.java similarity index 85% rename from server/src/main/java/com/epam/aidial/core/server/util/HttpException.java rename to storage/src/main/java/com/epam/aidial/core/storage/http/HttpException.java index 42f483cfa..efcef48bf 100644 --- a/server/src/main/java/com/epam/aidial/core/server/util/HttpException.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/http/HttpException.java @@ -1,4 +1,4 @@ -package com.epam.aidial.core.server.util; +package com.epam.aidial.core.storage.http; import lombok.Getter; diff --git a/server/src/main/java/com/epam/aidial/core/server/util/HttpStatus.java b/storage/src/main/java/com/epam/aidial/core/storage/http/HttpStatus.java similarity index 97% rename from server/src/main/java/com/epam/aidial/core/server/util/HttpStatus.java rename to storage/src/main/java/com/epam/aidial/core/storage/http/HttpStatus.java index 0c1073186..7eb47a309 100644 --- a/server/src/main/java/com/epam/aidial/core/server/util/HttpStatus.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/http/HttpStatus.java @@ -1,4 +1,4 @@ -package com.epam.aidial.core.server.util; +package com.epam.aidial.core.storage.http; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/server/src/main/java/com/epam/aidial/core/server/resource/ResourceDescriptor.java b/storage/src/main/java/com/epam/aidial/core/storage/resource/ResourceDescriptor.java similarity index 98% rename from server/src/main/java/com/epam/aidial/core/server/resource/ResourceDescriptor.java rename to storage/src/main/java/com/epam/aidial/core/storage/resource/ResourceDescriptor.java index 1b8c57e0d..2221456d7 100644 --- a/server/src/main/java/com/epam/aidial/core/server/resource/ResourceDescriptor.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/resource/ResourceDescriptor.java @@ -1,6 +1,6 @@ -package com.epam.aidial.core.server.resource; +package com.epam.aidial.core.storage.resource; -import com.epam.aidial.core.server.util.UrlUtil; +import com.epam.aidial.core.storage.util.UrlUtil; import lombok.AllArgsConstructor; import lombok.EqualsAndHashCode; import lombok.Getter; diff --git a/server/src/main/java/com/epam/aidial/core/server/resource/ResourceType.java b/storage/src/main/java/com/epam/aidial/core/storage/resource/ResourceType.java similarity index 70% rename from server/src/main/java/com/epam/aidial/core/server/resource/ResourceType.java rename to storage/src/main/java/com/epam/aidial/core/storage/resource/ResourceType.java index 3ff37414a..c96de7d69 100644 --- a/server/src/main/java/com/epam/aidial/core/server/resource/ResourceType.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/resource/ResourceType.java @@ -1,4 +1,4 @@ -package com.epam.aidial.core.server.resource; +package com.epam.aidial.core.storage.resource; public interface ResourceType { String name(); diff --git a/server/src/main/java/com/epam/aidial/core/server/resource/ResourceUtil.java b/storage/src/main/java/com/epam/aidial/core/storage/resource/ResourceUtil.java similarity index 81% rename from server/src/main/java/com/epam/aidial/core/server/resource/ResourceUtil.java rename to storage/src/main/java/com/epam/aidial/core/storage/resource/ResourceUtil.java index 742a67014..eb1da7726 100644 --- a/server/src/main/java/com/epam/aidial/core/server/resource/ResourceUtil.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/resource/ResourceUtil.java @@ -1,4 +1,4 @@ -package com.epam.aidial.core.server.resource; +package com.epam.aidial.core.storage.resource; import lombok.experimental.UtilityClass; diff --git a/server/src/main/java/com/epam/aidial/core/server/service/LockService.java b/storage/src/main/java/com/epam/aidial/core/storage/service/LockService.java similarity index 97% rename from server/src/main/java/com/epam/aidial/core/server/service/LockService.java rename to storage/src/main/java/com/epam/aidial/core/storage/service/LockService.java index 79730f83e..6d0cd1900 100644 --- a/server/src/main/java/com/epam/aidial/core/server/service/LockService.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/service/LockService.java @@ -1,6 +1,6 @@ -package com.epam.aidial.core.server.service; +package com.epam.aidial.core.storage.service; -import com.epam.aidial.core.server.storage.BlobStorageUtil; +import com.epam.aidial.core.storage.blobstore.BlobStorageUtil; import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.redisson.api.RScript; diff --git a/server/src/main/java/com/epam/aidial/core/server/service/ResourceService.java b/storage/src/main/java/com/epam/aidial/core/storage/service/ResourceService.java similarity index 97% rename from server/src/main/java/com/epam/aidial/core/server/service/ResourceService.java rename to storage/src/main/java/com/epam/aidial/core/storage/service/ResourceService.java index d88da5d56..01fec49ec 100644 --- a/server/src/main/java/com/epam/aidial/core/server/service/ResourceService.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/service/ResourceService.java @@ -1,17 +1,17 @@ -package com.epam.aidial.core.server.service; - -import com.epam.aidial.core.server.data.FileMetadata; -import com.epam.aidial.core.server.data.MetadataBase; -import com.epam.aidial.core.server.data.ResourceEvent; -import com.epam.aidial.core.server.data.ResourceFolderMetadata; -import com.epam.aidial.core.server.data.ResourceItemMetadata; -import com.epam.aidial.core.server.resource.ResourceDescriptor; -import com.epam.aidial.core.server.storage.BlobStorage; -import com.epam.aidial.core.server.storage.BlobStorageUtil; -import com.epam.aidial.core.server.util.Compression; -import com.epam.aidial.core.server.util.EtagBuilder; -import com.epam.aidial.core.server.util.EtagHeader; -import com.epam.aidial.core.server.util.RedisUtil; +package com.epam.aidial.core.storage.service; + +import com.epam.aidial.core.storage.blobstore.BlobStorage; +import com.epam.aidial.core.storage.blobstore.BlobStorageUtil; +import com.epam.aidial.core.storage.data.FileMetadata; +import com.epam.aidial.core.storage.data.MetadataBase; +import com.epam.aidial.core.storage.data.ResourceEvent; +import com.epam.aidial.core.storage.data.ResourceFolderMetadata; +import com.epam.aidial.core.storage.data.ResourceItemMetadata; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.util.Compression; +import com.epam.aidial.core.storage.util.EtagBuilder; +import com.epam.aidial.core.storage.util.EtagHeader; +import com.epam.aidial.core.storage.util.RedisUtil; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.google.common.collect.Sets; import lombok.Builder; @@ -283,7 +283,7 @@ public Pair getResourceWithMetadata(ResourceDescri } @Nullable - public Pair getResourceWithMetadata(ResourceDescriptor descriptor, boolean lock) { + private Pair getResourceWithMetadata(ResourceDescriptor descriptor, boolean lock) { String redisKey = redisKey(descriptor); Result result = redisGet(redisKey, true); @@ -314,7 +314,7 @@ public String getResource(ResourceDescriptor descriptor) { } @Nullable - public String getResource(ResourceDescriptor descriptor, boolean lock) { + private String getResource(ResourceDescriptor descriptor, boolean lock) { Pair result = getResourceWithMetadata(descriptor, lock); return (result == null) ? null : result.getRight(); } @@ -363,7 +363,7 @@ public ResourceItemMetadata putResource( return putResource(descriptor, body, etag, true); } - public ResourceItemMetadata putResource( + private ResourceItemMetadata putResource( ResourceDescriptor descriptor, String body, EtagHeader etag, boolean lock) { byte[] bytes = body.getBytes(StandardCharsets.UTF_8); return putResource(descriptor, bytes, etag, "application/json", lock); diff --git a/server/src/main/java/com/epam/aidial/core/server/service/ResourceTopic.java b/storage/src/main/java/com/epam/aidial/core/storage/service/ResourceTopic.java similarity index 90% rename from server/src/main/java/com/epam/aidial/core/server/service/ResourceTopic.java rename to storage/src/main/java/com/epam/aidial/core/storage/service/ResourceTopic.java index 7a22a16ac..628c9ae95 100644 --- a/server/src/main/java/com/epam/aidial/core/server/service/ResourceTopic.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/service/ResourceTopic.java @@ -1,8 +1,7 @@ -package com.epam.aidial.core.server.service; +package com.epam.aidial.core.storage.service; -import com.epam.aidial.core.server.data.ResourceEvent; -import com.epam.aidial.core.server.resource.ResourceDescriptor; -import io.vertx.core.impl.ConcurrentHashSet; +import com.epam.aidial.core.storage.data.ResourceEvent; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; import lombok.Value; import lombok.extern.slf4j.Slf4j; import org.redisson.api.RTopic; @@ -39,7 +38,7 @@ public Subscription subscribe(Collection resources, Consumer String url = resource.getUrl(); urlToSubscriptions.compute(url, (key, subs) -> { if (subs == null) { - subs = new ConcurrentHashSet<>(); + subs = ConcurrentHashMap.newKeySet(); } subs.add(subscription); diff --git a/server/src/main/java/com/epam/aidial/core/server/service/TimerService.java b/storage/src/main/java/com/epam/aidial/core/storage/service/TimerService.java similarity index 95% rename from server/src/main/java/com/epam/aidial/core/server/service/TimerService.java rename to storage/src/main/java/com/epam/aidial/core/storage/service/TimerService.java index ab4afde0a..6ab2987b7 100644 --- a/server/src/main/java/com/epam/aidial/core/server/service/TimerService.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/service/TimerService.java @@ -1,4 +1,4 @@ -package com.epam.aidial.core.server.service; +package com.epam.aidial.core.storage.service; /** * A service that can schedule commands to run after a given delay, or to execute periodically. diff --git a/server/src/main/java/com/epam/aidial/core/server/util/Compression.java b/storage/src/main/java/com/epam/aidial/core/storage/util/Compression.java similarity index 97% rename from server/src/main/java/com/epam/aidial/core/server/util/Compression.java rename to storage/src/main/java/com/epam/aidial/core/storage/util/Compression.java index 3f9861107..81ac5e086 100644 --- a/server/src/main/java/com/epam/aidial/core/server/util/Compression.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/util/Compression.java @@ -1,4 +1,4 @@ -package com.epam.aidial.core.server.util; +package com.epam.aidial.core.storage.util; import lombok.SneakyThrows; import lombok.experimental.UtilityClass; diff --git a/server/src/main/java/com/epam/aidial/core/server/util/EtagBuilder.java b/storage/src/main/java/com/epam/aidial/core/storage/util/EtagBuilder.java similarity index 95% rename from server/src/main/java/com/epam/aidial/core/server/util/EtagBuilder.java rename to storage/src/main/java/com/epam/aidial/core/storage/util/EtagBuilder.java index 54c5a46bc..6fdb4d686 100644 --- a/server/src/main/java/com/epam/aidial/core/server/util/EtagBuilder.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/util/EtagBuilder.java @@ -1,4 +1,4 @@ -package com.epam.aidial.core.server.util; +package com.epam.aidial.core.storage.util; import lombok.SneakyThrows; diff --git a/server/src/main/java/com/epam/aidial/core/server/util/EtagHeader.java b/storage/src/main/java/com/epam/aidial/core/storage/util/EtagHeader.java similarity index 93% rename from server/src/main/java/com/epam/aidial/core/server/util/EtagHeader.java rename to storage/src/main/java/com/epam/aidial/core/storage/util/EtagHeader.java index fcb785c38..72078c990 100644 --- a/server/src/main/java/com/epam/aidial/core/server/util/EtagHeader.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/util/EtagHeader.java @@ -1,5 +1,7 @@ -package com.epam.aidial.core.server.util; +package com.epam.aidial.core.storage.util; +import com.epam.aidial.core.storage.http.HttpException; +import com.epam.aidial.core.storage.http.HttpStatus; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/server/src/main/java/com/epam/aidial/core/server/util/RedisUtil.java b/storage/src/main/java/com/epam/aidial/core/storage/util/RedisUtil.java similarity index 98% rename from server/src/main/java/com/epam/aidial/core/server/util/RedisUtil.java rename to storage/src/main/java/com/epam/aidial/core/storage/util/RedisUtil.java index 5714de2aa..78b4ac082 100644 --- a/server/src/main/java/com/epam/aidial/core/server/util/RedisUtil.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/util/RedisUtil.java @@ -1,4 +1,4 @@ -package com.epam.aidial.core.server.util; +package com.epam.aidial.core.storage.util; import lombok.experimental.UtilityClass; import org.apache.commons.lang3.ArrayUtils; diff --git a/server/src/main/java/com/epam/aidial/core/server/util/UrlUtil.java b/storage/src/main/java/com/epam/aidial/core/storage/util/UrlUtil.java similarity index 95% rename from server/src/main/java/com/epam/aidial/core/server/util/UrlUtil.java rename to storage/src/main/java/com/epam/aidial/core/storage/util/UrlUtil.java index 8ba08da41..99c063730 100644 --- a/server/src/main/java/com/epam/aidial/core/server/util/UrlUtil.java +++ b/storage/src/main/java/com/epam/aidial/core/storage/util/UrlUtil.java @@ -1,6 +1,6 @@ -package com.epam.aidial.core.server.util; +package com.epam.aidial.core.storage.util; -import com.epam.aidial.core.server.resource.ResourceDescriptor; +import com.epam.aidial.core.storage.resource.ResourceDescriptor; import com.google.common.escape.Escaper; import com.google.common.net.UrlEscapers; import lombok.SneakyThrows; diff --git a/server/src/test/java/com/epam/aidial/core/server/service/LockServiceTest.java b/storage/src/test/java/com/epam/aidial/core/storage/service/LockServiceTest.java similarity index 97% rename from server/src/test/java/com/epam/aidial/core/server/service/LockServiceTest.java rename to storage/src/test/java/com/epam/aidial/core/storage/service/LockServiceTest.java index 2e41c9501..40c3d0d2a 100644 --- a/server/src/test/java/com/epam/aidial/core/server/service/LockServiceTest.java +++ b/storage/src/test/java/com/epam/aidial/core/storage/service/LockServiceTest.java @@ -1,4 +1,4 @@ -package com.epam.aidial.core.server.service; +package com.epam.aidial.core.storage.service; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Assertions; diff --git a/server/src/test/java/com/epam/aidial/core/server/util/CompressionTest.java b/storage/src/test/java/com/epam/aidial/core/storage/util/CompressionTest.java similarity index 96% rename from server/src/test/java/com/epam/aidial/core/server/util/CompressionTest.java rename to storage/src/test/java/com/epam/aidial/core/storage/util/CompressionTest.java index 545f7422f..38f6eebe9 100644 --- a/server/src/test/java/com/epam/aidial/core/server/util/CompressionTest.java +++ b/storage/src/test/java/com/epam/aidial/core/storage/util/CompressionTest.java @@ -1,4 +1,4 @@ -package com.epam.aidial.core.server.util; +package com.epam.aidial.core.storage.util; import org.junit.jupiter.api.Test; diff --git a/server/src/test/java/com/epam/aidial/core/server/util/EtagHeaderTest.java b/storage/src/test/java/com/epam/aidial/core/storage/util/EtagHeaderTest.java similarity index 92% rename from server/src/test/java/com/epam/aidial/core/server/util/EtagHeaderTest.java rename to storage/src/test/java/com/epam/aidial/core/storage/util/EtagHeaderTest.java index 5ecebf21a..62bdbc4bd 100644 --- a/server/src/test/java/com/epam/aidial/core/server/util/EtagHeaderTest.java +++ b/storage/src/test/java/com/epam/aidial/core/storage/util/EtagHeaderTest.java @@ -1,6 +1,7 @@ -package com.epam.aidial.core.server.util; +package com.epam.aidial.core.storage.util; +import com.epam.aidial.core.storage.http.HttpException; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertThrows; diff --git a/server/src/test/java/com/epam/aidial/core/server/util/UrlUtilTest.java b/storage/src/test/java/com/epam/aidial/core/storage/util/UrlUtilTest.java similarity index 98% rename from server/src/test/java/com/epam/aidial/core/server/util/UrlUtilTest.java rename to storage/src/test/java/com/epam/aidial/core/storage/util/UrlUtilTest.java index 5e634418e..6a695a33e 100644 --- a/server/src/test/java/com/epam/aidial/core/server/util/UrlUtilTest.java +++ b/storage/src/test/java/com/epam/aidial/core/storage/util/UrlUtilTest.java @@ -1,4 +1,4 @@ -package com.epam.aidial.core.server.util; +package com.epam.aidial.core.storage.util; import org.junit.jupiter.api.Test;