From dcf1dec679bf2d5f24088429de374457cf6a0ffe Mon Sep 17 00:00:00 2001 From: Jan Cizmar Date: Mon, 9 Sep 2024 09:59:42 +0200 Subject: [PATCH 01/19] fix: Prevent query validation on startup --- .../io/tolgee/websocket/WebSocketConfig.kt | 3 + .../tolgee/configuration/WebSecurityConfig.kt | 8 + .../app/src/test/resources/application.yaml | 8 + .../batch/cleaning/ScheduledJobCleaner.kt | 6 + .../repository/AnnouncementRepository.kt | 2 + .../io/tolgee/repository/ApiKeyRepository.kt | 2 + .../AutoTranslationConfigRepository.kt | 2 + .../tolgee/repository/AutomationRepository.kt | 2 + .../tolgee/repository/BatchJobRepository.kt | 2 + .../repository/EmailVerificationRepository.kt | 2 + .../tolgee/repository/InvitationRepository.kt | 2 + .../repository/KeyCodeReferenceRepository.kt | 2 + .../tolgee/repository/KeyCommentRepository.kt | 2 + .../io/tolgee/repository/KeyMetaRepository.kt | 2 + .../io/tolgee/repository/KeyRepository.kt | 2 + .../KeyScreenshotReferenceRepository.kt | 2 + .../repository/KeysDistanceRepository.kt | 2 + .../tolgee/repository/LanguageRepository.kt | 2 + .../repository/LanguageStatsRepository.kt | 2 + .../tolgee/repository/NamespaceRepository.kt | 2 + .../repository/OrganizationRepository.kt | 2 + .../repository/OrganizationRoleRepository.kt | 2 + .../io/tolgee/repository/PatRepository.kt | 4 + .../tolgee/repository/PermissionRepository.kt | 2 + .../io/tolgee/repository/ProjectRepository.kt | 2 + .../tolgee/repository/QuickStartRepository.kt | 2 + .../tolgee/repository/ScreenshotRepository.kt | 2 + .../io/tolgee/repository/TagRepository.kt | 4 + .../repository/TranslationRepository.kt | 2 + .../repository/UploadedImageRepository.kt | 2 + .../repository/UserAccountRepository.kt | 2 + .../repository/UserPreferencesRepository.kt | 2 + .../repository/WebhookConfigRepository.kt | 2 + .../ActivityDescribingEntityRepository.kt | 2 + .../ActivityModifiedEntityRepository.kt | 2 + .../activity/ActivityRevisionRepository.kt | 2 + .../ContentDeliveryConfigRepository.kt | 2 + .../ContentStorageRepository.kt | 2 + .../dataImport/ImportFileRepository.kt | 2 + .../dataImport/ImportKeyRepository.kt | 2 + .../dataImport/ImportLanguageRepository.kt | 2 + .../repository/dataImport/ImportRepository.kt | 2 + .../dataImport/ImportTranslationRepository.kt | 2 + .../issues/ImportFileIssueParamRepository.kt | 2 + .../issues/ImportFileIssueRepository.kt | 2 + ...achineTranslationCreditBucketRepository.kt | 2 + .../MtServiceConfigRepository.kt | 2 + .../TranslationCommentRepository.kt | 2 + .../io/tolgee/service/ImageUploadService.kt | 2 + .../service/security/UserAccountService.kt | 1 + .../authentication/AuthenticationFilter.kt | 4 + .../ratelimit/GlobalIpRateLimitFilter.kt | 3 + e2e/cypress/support/dataCyType.d.ts | 561 ------------------ .../ee/repository/EeSubscriptionRepository.kt | 2 + .../OrganizationSlackWorkspaceRepository.kt | 2 + .../SavedSlackMessageRepository.kt | 2 + .../SlackConfigPreferenceRepository.kt | 2 + .../slackIntegration/SlackConfigRepository.kt | 2 + .../SlackMessageInfoRepository.kt | 2 + .../SlackUserConnectionRepository.kt | 2 + .../SavedSlackMessageService.kt | 5 +- 61 files changed, 144 insertions(+), 563 deletions(-) diff --git a/backend/api/src/main/kotlin/io/tolgee/websocket/WebSocketConfig.kt b/backend/api/src/main/kotlin/io/tolgee/websocket/WebSocketConfig.kt index 92556cef47..b607e54a27 100644 --- a/backend/api/src/main/kotlin/io/tolgee/websocket/WebSocketConfig.kt +++ b/backend/api/src/main/kotlin/io/tolgee/websocket/WebSocketConfig.kt @@ -5,6 +5,7 @@ import io.tolgee.security.authentication.JwtService import io.tolgee.security.authentication.TolgeeAuthentication import io.tolgee.service.security.SecurityService import org.springframework.context.annotation.Configuration +import org.springframework.context.annotation.Lazy import org.springframework.messaging.Message import org.springframework.messaging.MessageChannel import org.springframework.messaging.MessagingException @@ -21,7 +22,9 @@ import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerCo @Configuration @EnableWebSocketMessageBroker class WebSocketConfig( + @Lazy private val jwtService: JwtService, + @Lazy private val securityService: SecurityService, ) : WebSocketMessageBrokerConfigurer { override fun configureMessageBroker(config: MessageBrokerRegistry) { diff --git a/backend/app/src/main/kotlin/io/tolgee/configuration/WebSecurityConfig.kt b/backend/app/src/main/kotlin/io/tolgee/configuration/WebSecurityConfig.kt index eda562309d..8778a3856c 100644 --- a/backend/app/src/main/kotlin/io/tolgee/configuration/WebSecurityConfig.kt +++ b/backend/app/src/main/kotlin/io/tolgee/configuration/WebSecurityConfig.kt @@ -29,6 +29,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty import org.springframework.boot.web.servlet.FilterRegistrationBean import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration +import org.springframework.context.annotation.Lazy import org.springframework.core.Ordered import org.springframework.core.annotation.Order import org.springframework.security.config.Customizer @@ -46,12 +47,19 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer @Configuration @EnableWebSecurity class WebSecurityConfig( + @Lazy private val authenticationFilter: AuthenticationFilter, + @Lazy private val globalIpRateLimitFilter: GlobalIpRateLimitFilter, + @Lazy private val globalUserRateLimitFilter: GlobalUserRateLimitFilter, + @Lazy private val rateLimitInterceptor: RateLimitInterceptor, + @Lazy private val authenticationInterceptor: AuthenticationInterceptor, + @Lazy private val organizationAuthorizationInterceptor: OrganizationAuthorizationInterceptor, + @Lazy private val projectAuthorizationInterceptor: ProjectAuthorizationInterceptor, private val exceptionHandlerFilter: ExceptionHandlerFilter, ) : WebMvcConfigurer { diff --git a/backend/app/src/test/resources/application.yaml b/backend/app/src/test/resources/application.yaml index c67fbea1e5..bc3fc8c26e 100644 --- a/backend/app/src/test/resources/application.yaml +++ b/backend/app/src/test/resources/application.yaml @@ -17,6 +17,14 @@ spring: enableLazyInitialization: true enableDirtyTracking: true dialect: io.tolgee.dialects.postgres.CustomPostgreSQLDialect +# javax: +# persistence: +# validation: +# mode: none +# jakarta: +# persistence: +# validation: +# mode: none mvc: pathmatch: matching-strategy: ant_path_matcher diff --git a/backend/data/src/main/kotlin/io/tolgee/batch/cleaning/ScheduledJobCleaner.kt b/backend/data/src/main/kotlin/io/tolgee/batch/cleaning/ScheduledJobCleaner.kt index e36b3f8075..1d07ed76f3 100644 --- a/backend/data/src/main/kotlin/io/tolgee/batch/cleaning/ScheduledJobCleaner.kt +++ b/backend/data/src/main/kotlin/io/tolgee/batch/cleaning/ScheduledJobCleaner.kt @@ -12,18 +12,24 @@ import io.tolgee.util.addSeconds import io.tolgee.util.logger import io.tolgee.util.runSentryCatching import jakarta.persistence.EntityManager +import org.springframework.context.annotation.Lazy import org.springframework.scheduling.annotation.Scheduled import org.springframework.stereotype.Component import org.springframework.transaction.annotation.Transactional @Component class ScheduledJobCleaner( + @Lazy private val batchJobService: BatchJobService, + @Lazy private val lockingManager: BatchJobProjectLockingManager, private val currentDateProvider: CurrentDateProvider, + @Lazy private val batchJobStateProvider: BatchJobStateProvider, private val entityManager: EntityManager, + @Lazy private val cachingBatchJobService: CachingBatchJobService, + @Lazy private val batchJobStatusProvider: BatchJobStatusProvider, ) : Logging { /** diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/AnnouncementRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/AnnouncementRepository.kt index 92d8694512..7b29ab273e 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/AnnouncementRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/AnnouncementRepository.kt @@ -3,11 +3,13 @@ package io.tolgee.repository import io.tolgee.model.DismissedAnnouncement import io.tolgee.model.DismissedAnnouncementId import io.tolgee.model.enums.announcement.Announcement +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.Query import org.springframework.stereotype.Repository @Repository +@Lazy interface AnnouncementRepository : JpaRepository { @Query( """ diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/ApiKeyRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/ApiKeyRepository.kt index 438f416725..da45f0797d 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/ApiKeyRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/ApiKeyRepository.kt @@ -1,6 +1,7 @@ package io.tolgee.repository import io.tolgee.model.ApiKey +import org.springframework.context.annotation.Lazy import org.springframework.data.domain.Page import org.springframework.data.domain.Pageable import org.springframework.data.jpa.repository.EntityGraph @@ -11,6 +12,7 @@ import org.springframework.stereotype.Repository import java.util.* @Repository +@Lazy interface ApiKeyRepository : JpaRepository { fun findByKeyHash(hash: String): Optional diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/AutoTranslationConfigRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/AutoTranslationConfigRepository.kt index 5140868709..a3e7baed15 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/AutoTranslationConfigRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/AutoTranslationConfigRepository.kt @@ -2,11 +2,13 @@ package io.tolgee.repository import io.tolgee.model.AutoTranslationConfig import io.tolgee.model.Project +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.Query import org.springframework.stereotype.Repository @Repository +@Lazy interface AutoTranslationConfigRepository : JpaRepository { fun findOneByProjectAndTargetLanguageId( project: Project, diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/AutomationRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/AutomationRepository.kt index d843b4284e..41c5446e17 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/AutomationRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/AutomationRepository.kt @@ -1,11 +1,13 @@ package io.tolgee.repository import io.tolgee.model.automations.Automation +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.Query import org.springframework.stereotype.Repository @Repository +@Lazy interface AutomationRepository : JpaRepository { @Query( """ diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/BatchJobRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/BatchJobRepository.kt index beaa98eda2..722c467409 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/BatchJobRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/BatchJobRepository.kt @@ -3,6 +3,7 @@ package io.tolgee.repository import io.tolgee.model.batch.BatchJob import io.tolgee.model.batch.BatchJobStatus import io.tolgee.model.views.JobErrorMessagesView +import org.springframework.context.annotation.Lazy import org.springframework.data.domain.Page import org.springframework.data.domain.Pageable import org.springframework.data.jpa.repository.JpaRepository @@ -11,6 +12,7 @@ import org.springframework.stereotype.Repository import java.util.* @Repository +@Lazy interface BatchJobRepository : JpaRepository { @Query( value = """ diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/EmailVerificationRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/EmailVerificationRepository.kt index 38e4d8fa91..395d4654c2 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/EmailVerificationRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/EmailVerificationRepository.kt @@ -1,8 +1,10 @@ package io.tolgee.repository import io.tolgee.model.EmailVerification +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.JpaRepository import org.springframework.stereotype.Repository @Repository +@Lazy interface EmailVerificationRepository : JpaRepository diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/InvitationRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/InvitationRepository.kt index 732b620575..5b1b5f4712 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/InvitationRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/InvitationRepository.kt @@ -3,12 +3,14 @@ package io.tolgee.repository import io.tolgee.model.Invitation import io.tolgee.model.Organization import io.tolgee.model.Project +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.Query import org.springframework.stereotype.Repository import java.util.* @Repository +@Lazy interface InvitationRepository : JpaRepository { fun deleteAllByCreatedAtLessThan(date: Date) diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/KeyCodeReferenceRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/KeyCodeReferenceRepository.kt index 46fa50df8b..2da9fffe72 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/KeyCodeReferenceRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/KeyCodeReferenceRepository.kt @@ -1,6 +1,7 @@ package io.tolgee.repository import io.tolgee.model.key.KeyCodeReference +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.Modifying import org.springframework.data.jpa.repository.Query @@ -8,6 +9,7 @@ import org.springframework.stereotype.Repository import org.springframework.transaction.annotation.Transactional @Repository +@Lazy interface KeyCodeReferenceRepository : JpaRepository { @Modifying @Transactional diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/KeyCommentRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/KeyCommentRepository.kt index 02bfcd50b1..c50a196e37 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/KeyCommentRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/KeyCommentRepository.kt @@ -1,6 +1,7 @@ package io.tolgee.repository import io.tolgee.model.key.KeyComment +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.Modifying import org.springframework.data.jpa.repository.Query @@ -8,6 +9,7 @@ import org.springframework.stereotype.Repository import org.springframework.transaction.annotation.Transactional @Repository +@Lazy interface KeyCommentRepository : JpaRepository { @Modifying @Transactional diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/KeyMetaRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/KeyMetaRepository.kt index 982e90ce11..6fcd56600b 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/KeyMetaRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/KeyMetaRepository.kt @@ -1,6 +1,7 @@ package io.tolgee.repository import io.tolgee.model.key.KeyMeta +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.Modifying import org.springframework.data.jpa.repository.Query @@ -8,6 +9,7 @@ import org.springframework.stereotype.Repository import org.springframework.transaction.annotation.Transactional @Repository +@Lazy interface KeyMetaRepository : JpaRepository { @Modifying @Transactional diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/KeyRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/KeyRepository.kt index e4fa89e735..fa1e4adc13 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/KeyRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/KeyRepository.kt @@ -4,6 +4,7 @@ import io.tolgee.dtos.queryResults.KeyView import io.tolgee.model.Language import io.tolgee.model.key.Key import io.tolgee.service.key.KeySearchResultView +import org.springframework.context.annotation.Lazy import org.springframework.data.domain.Page import org.springframework.data.domain.Pageable import org.springframework.data.jpa.repository.JpaRepository @@ -12,6 +13,7 @@ import org.springframework.stereotype.Repository import java.util.* @Repository +@Lazy interface KeyRepository : JpaRepository { @Query( """ diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/KeyScreenshotReferenceRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/KeyScreenshotReferenceRepository.kt index 2260378714..bde9dc77d4 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/KeyScreenshotReferenceRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/KeyScreenshotReferenceRepository.kt @@ -4,11 +4,13 @@ import io.tolgee.model.Screenshot import io.tolgee.model.key.Key import io.tolgee.model.key.screenshotReference.KeyScreenshotReference import io.tolgee.model.key.screenshotReference.KeyScreenshotReferenceId +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.Query import org.springframework.stereotype.Repository @Repository +@Lazy interface KeyScreenshotReferenceRepository : JpaRepository { fun getAllByScreenshot(screenshot: Screenshot): List diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/KeysDistanceRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/KeysDistanceRepository.kt index 2da8f596f4..df42cb06b7 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/KeysDistanceRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/KeysDistanceRepository.kt @@ -2,6 +2,7 @@ package io.tolgee.repository import io.tolgee.model.keyBigMeta.KeysDistance import io.tolgee.service.key.KeyWithBaseTranslationView +import org.springframework.context.annotation.Lazy import org.springframework.data.domain.PageRequest import org.springframework.data.domain.Pageable import org.springframework.data.jpa.repository.JpaRepository @@ -9,6 +10,7 @@ import org.springframework.data.jpa.repository.Query import org.springframework.stereotype.Repository @Repository +@Lazy interface KeysDistanceRepository : JpaRepository { @Query( """ diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/LanguageRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/LanguageRepository.kt index 6e090cf3cb..3f3091144d 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/LanguageRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/LanguageRepository.kt @@ -2,6 +2,7 @@ package io.tolgee.repository import io.tolgee.dtos.cacheable.LanguageDto import io.tolgee.model.Language +import org.springframework.context.annotation.Lazy import org.springframework.data.domain.Page import org.springframework.data.domain.Pageable import org.springframework.data.jpa.repository.JpaRepository @@ -10,6 +11,7 @@ import org.springframework.stereotype.Repository import java.util.* @Repository +@Lazy interface LanguageRepository : JpaRepository { @Query( """ diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/LanguageStatsRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/LanguageStatsRepository.kt index 9e33d518df..e8e0f8734d 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/LanguageStatsRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/LanguageStatsRepository.kt @@ -2,6 +2,7 @@ package io.tolgee.repository import io.tolgee.dtos.queryResults.LanguageStatsDto import io.tolgee.model.LanguageStats +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.Modifying import org.springframework.data.jpa.repository.Query @@ -9,6 +10,7 @@ import org.springframework.stereotype.Repository import org.springframework.transaction.annotation.Transactional @Repository +@Lazy interface LanguageStatsRepository : JpaRepository { @Modifying @Transactional diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/NamespaceRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/NamespaceRepository.kt index 3ea334c752..b7733dfa12 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/NamespaceRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/NamespaceRepository.kt @@ -1,6 +1,7 @@ package io.tolgee.repository import io.tolgee.model.key.Namespace +import org.springframework.context.annotation.Lazy import org.springframework.data.domain.Page import org.springframework.data.domain.Pageable import org.springframework.data.jpa.repository.JpaRepository @@ -9,6 +10,7 @@ import org.springframework.data.jpa.repository.Query import org.springframework.stereotype.Repository @Repository +@Lazy interface NamespaceRepository : JpaRepository { fun findByNameAndProjectId( name: String, diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/OrganizationRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/OrganizationRepository.kt index 8e79f56fe8..bc41655588 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/OrganizationRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/OrganizationRepository.kt @@ -4,6 +4,7 @@ import io.tolgee.dtos.queryResults.organization.OrganizationView import io.tolgee.model.Organization import io.tolgee.model.UserAccount import io.tolgee.model.enums.OrganizationRoleType +import org.springframework.context.annotation.Lazy import org.springframework.data.domain.Page import org.springframework.data.domain.Pageable import org.springframework.data.jpa.repository.JpaRepository @@ -11,6 +12,7 @@ import org.springframework.data.jpa.repository.Query import org.springframework.stereotype.Repository @Repository +@Lazy interface OrganizationRepository : JpaRepository { @Query( """ diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/OrganizationRoleRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/OrganizationRoleRepository.kt index 6ce577f7f8..bca49eee78 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/OrganizationRoleRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/OrganizationRoleRepository.kt @@ -3,10 +3,12 @@ package io.tolgee.repository import io.tolgee.model.Organization import io.tolgee.model.OrganizationRole import io.tolgee.model.enums.OrganizationRoleType +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.JpaRepository import org.springframework.stereotype.Repository @Repository +@Lazy interface OrganizationRoleRepository : JpaRepository { fun findOneByUserIdAndOrganizationId( userId: Long, diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/PatRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/PatRepository.kt index 66dcfb512f..591c605a52 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/PatRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/PatRepository.kt @@ -1,13 +1,17 @@ package io.tolgee.repository import io.tolgee.model.Pat +import org.springframework.context.annotation.Lazy import org.springframework.data.domain.Page import org.springframework.data.domain.Pageable import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.Modifying import org.springframework.data.jpa.repository.Query +import org.springframework.stereotype.Repository import java.util.* +@Repository +@Lazy interface PatRepository : JpaRepository { fun findByTokenHash(tokenHash: String): Pat? diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/PermissionRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/PermissionRepository.kt index 828de80567..6d4399397d 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/PermissionRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/PermissionRepository.kt @@ -2,11 +2,13 @@ package io.tolgee.repository import io.tolgee.model.Language import io.tolgee.model.Permission +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.Query import org.springframework.stereotype.Repository @Repository +@Lazy interface PermissionRepository : JpaRepository { @Query( """ diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/ProjectRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/ProjectRepository.kt index be1204029b..18a11a0dd0 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/ProjectRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/ProjectRepository.kt @@ -3,6 +3,7 @@ package io.tolgee.repository import io.tolgee.model.Organization import io.tolgee.model.Project import io.tolgee.model.views.ProjectView +import org.springframework.context.annotation.Lazy import org.springframework.data.domain.Page import org.springframework.data.domain.Pageable import org.springframework.data.jpa.repository.JpaRepository @@ -11,6 +12,7 @@ import org.springframework.data.repository.query.Param import org.springframework.stereotype.Repository @Repository +@Lazy interface ProjectRepository : JpaRepository { companion object { const val BASE_VIEW_QUERY = """select r.id as id, r.name as name, r.description as description, diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/QuickStartRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/QuickStartRepository.kt index f7a33d8ff0..e02b36220d 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/QuickStartRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/QuickStartRepository.kt @@ -2,11 +2,13 @@ package io.tolgee.repository import io.tolgee.dtos.queryResults.organization.QuickStartView import io.tolgee.model.QuickStart +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.Query import org.springframework.stereotype.Repository @Repository +@Lazy interface QuickStartRepository : JpaRepository { fun findByUserAccountId(userAccountId: Long): QuickStart? diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/ScreenshotRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/ScreenshotRepository.kt index 6079e3dd05..fb40ee2a48 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/ScreenshotRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/ScreenshotRepository.kt @@ -3,11 +3,13 @@ package io.tolgee.repository import io.tolgee.model.Screenshot import io.tolgee.model.key.Key import io.tolgee.model.key.screenshotReference.KeyScreenshotReference +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.Query import org.springframework.stereotype.Repository @Repository +@Lazy interface ScreenshotRepository : JpaRepository { @Query( """FROM Screenshot s where s.id in diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/TagRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/TagRepository.kt index 04df5178a1..b623a7844d 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/TagRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/TagRepository.kt @@ -4,12 +4,16 @@ import io.tolgee.model.Project import io.tolgee.model.dataImport.ImportKey import io.tolgee.model.key.Key import io.tolgee.model.key.Tag +import org.springframework.context.annotation.Lazy import org.springframework.data.domain.Page import org.springframework.data.domain.Pageable import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.Modifying import org.springframework.data.jpa.repository.Query +import org.springframework.stereotype.Repository +@Repository +@Lazy interface TagRepository : JpaRepository { fun findByProjectAndName( project: Project, diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/TranslationRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/TranslationRepository.kt index 1b58cf483f..e3691d88ee 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/TranslationRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/TranslationRepository.kt @@ -6,6 +6,7 @@ import io.tolgee.model.key.Key import io.tolgee.model.translation.Translation import io.tolgee.model.views.SimpleTranslationView import io.tolgee.model.views.TranslationMemoryItemView +import org.springframework.context.annotation.Lazy import org.springframework.data.domain.Page import org.springframework.data.domain.Pageable import org.springframework.data.jpa.repository.JpaRepository @@ -15,6 +16,7 @@ import org.springframework.stereotype.Repository import java.util.* @Repository +@Lazy interface TranslationRepository : JpaRepository { @Query( """select t.text as text, l.tag as languageTag, k.name as key diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/UploadedImageRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/UploadedImageRepository.kt index 745a131fde..de05af719d 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/UploadedImageRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/UploadedImageRepository.kt @@ -2,6 +2,7 @@ package io.tolgee.repository import io.tolgee.model.UploadedImage import io.tolgee.model.UserAccount +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.EntityGraph import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.Query @@ -9,6 +10,7 @@ import org.springframework.stereotype.Repository import java.util.* @Repository +@Lazy interface UploadedImageRepository : JpaRepository { fun countAllByUserAccount(userAccount: UserAccount): Long diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/UserAccountRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/UserAccountRepository.kt index c40d591db0..bc0de7fb04 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/UserAccountRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/UserAccountRepository.kt @@ -4,6 +4,7 @@ import io.tolgee.dtos.queryResults.UserAccountView import io.tolgee.model.UserAccount import io.tolgee.model.views.UserAccountInProjectView import io.tolgee.model.views.UserAccountWithOrganizationRoleView +import org.springframework.context.annotation.Lazy import org.springframework.data.domain.Page import org.springframework.data.domain.Pageable import org.springframework.data.jpa.repository.JpaRepository @@ -13,6 +14,7 @@ import org.springframework.stereotype.Repository import java.util.* @Repository +@Lazy interface UserAccountRepository : JpaRepository { fun findByUsername(username: String?): Optional diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/UserPreferencesRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/UserPreferencesRepository.kt index de07dd78bb..cccc40fb63 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/UserPreferencesRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/UserPreferencesRepository.kt @@ -1,8 +1,10 @@ package io.tolgee.repository import io.tolgee.model.UserPreferences +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.JpaRepository import org.springframework.stereotype.Repository @Repository +@Lazy interface UserPreferencesRepository : JpaRepository diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/WebhookConfigRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/WebhookConfigRepository.kt index 41e9282063..90c6e2bf9c 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/WebhookConfigRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/WebhookConfigRepository.kt @@ -2,6 +2,7 @@ package io.tolgee.repository import io.tolgee.model.Project import io.tolgee.model.webhook.WebhookConfig +import org.springframework.context.annotation.Lazy import org.springframework.data.domain.Page import org.springframework.data.domain.Pageable import org.springframework.data.jpa.repository.JpaRepository @@ -9,6 +10,7 @@ import org.springframework.data.jpa.repository.Query import org.springframework.stereotype.Repository @Repository +@Lazy interface WebhookConfigRepository : JpaRepository { @Query( """ diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/activity/ActivityDescribingEntityRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/activity/ActivityDescribingEntityRepository.kt index 0628eac34e..b7b5c307e6 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/activity/ActivityDescribingEntityRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/activity/ActivityDescribingEntityRepository.kt @@ -2,8 +2,10 @@ package io.tolgee.repository.activity import io.tolgee.model.activity.ActivityDescribingEntity import io.tolgee.model.activity.ActivityDescribingEntityId +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.JpaRepository import org.springframework.stereotype.Repository @Repository +@Lazy interface ActivityDescribingEntityRepository : JpaRepository diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/activity/ActivityModifiedEntityRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/activity/ActivityModifiedEntityRepository.kt index 4fa522bac8..a78e643ce9 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/activity/ActivityModifiedEntityRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/activity/ActivityModifiedEntityRepository.kt @@ -4,6 +4,7 @@ import io.tolgee.activity.data.ActivityType import io.tolgee.dtos.queryResults.TranslationHistoryView import io.tolgee.model.activity.ActivityModifiedEntity import io.tolgee.model.activity.ActivityModifiedEntityId +import org.springframework.context.annotation.Lazy import org.springframework.data.domain.Page import org.springframework.data.domain.Pageable import org.springframework.data.jpa.repository.JpaRepository @@ -11,6 +12,7 @@ import org.springframework.data.jpa.repository.Query import org.springframework.stereotype.Repository @Repository +@Lazy interface ActivityModifiedEntityRepository : JpaRepository { @Query( """ diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/activity/ActivityRevisionRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/activity/ActivityRevisionRepository.kt index 5fd28dde46..c9fbc41d06 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/activity/ActivityRevisionRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/activity/ActivityRevisionRepository.kt @@ -2,6 +2,7 @@ package io.tolgee.repository.activity import io.tolgee.activity.data.ActivityType import io.tolgee.model.activity.ActivityRevision +import org.springframework.context.annotation.Lazy import org.springframework.data.domain.Page import org.springframework.data.domain.Pageable import org.springframework.data.jpa.repository.JpaRepository @@ -9,6 +10,7 @@ import org.springframework.data.jpa.repository.Query import org.springframework.stereotype.Repository @Repository +@Lazy interface ActivityRevisionRepository : JpaRepository { @Query( """ diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/contentDelivery/ContentDeliveryConfigRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/contentDelivery/ContentDeliveryConfigRepository.kt index bfd51bd7a7..de3508cd66 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/contentDelivery/ContentDeliveryConfigRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/contentDelivery/ContentDeliveryConfigRepository.kt @@ -2,6 +2,7 @@ package io.tolgee.repository.contentDelivery import io.tolgee.model.Project import io.tolgee.model.contentDelivery.ContentDeliveryConfig +import org.springframework.context.annotation.Lazy import org.springframework.data.domain.Page import org.springframework.data.domain.Pageable import org.springframework.data.jpa.repository.JpaRepository @@ -9,6 +10,7 @@ import org.springframework.data.jpa.repository.Query import org.springframework.stereotype.Repository @Repository +@Lazy interface ContentDeliveryConfigRepository : JpaRepository { @Query( """ diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/contentDelivery/ContentStorageRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/contentDelivery/ContentStorageRepository.kt index 56c4b8f377..cc6ad2b63c 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/contentDelivery/ContentStorageRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/contentDelivery/ContentStorageRepository.kt @@ -1,6 +1,7 @@ package io.tolgee.repository.contentDelivery import io.tolgee.model.contentDelivery.ContentStorage +import org.springframework.context.annotation.Lazy import org.springframework.data.domain.Page import org.springframework.data.domain.Pageable import org.springframework.data.jpa.repository.JpaRepository @@ -8,6 +9,7 @@ import org.springframework.data.jpa.repository.Query import org.springframework.stereotype.Repository @Repository +@Lazy interface ContentStorageRepository : JpaRepository { fun findAllByProjectId( projectId: Long, diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/dataImport/ImportFileRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/dataImport/ImportFileRepository.kt index f5252cb0ce..bb25056e9f 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/dataImport/ImportFileRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/dataImport/ImportFileRepository.kt @@ -1,11 +1,13 @@ package io.tolgee.repository.dataImport import io.tolgee.model.dataImport.ImportFile +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.Query import org.springframework.stereotype.Repository @Repository +@Lazy interface ImportFileRepository : JpaRepository { @Query( """ diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/dataImport/ImportKeyRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/dataImport/ImportKeyRepository.kt index cbe795c7b8..0a9ccc548c 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/dataImport/ImportKeyRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/dataImport/ImportKeyRepository.kt @@ -2,6 +2,7 @@ package io.tolgee.repository.dataImport import io.tolgee.model.dataImport.Import import io.tolgee.model.dataImport.ImportKey +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.Modifying import org.springframework.data.jpa.repository.Query @@ -9,6 +10,7 @@ import org.springframework.stereotype.Repository import org.springframework.transaction.annotation.Transactional @Repository +@Lazy interface ImportKeyRepository : JpaRepository { @Query( """ diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/dataImport/ImportLanguageRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/dataImport/ImportLanguageRepository.kt index 0a279f1043..8ca0629ff2 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/dataImport/ImportLanguageRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/dataImport/ImportLanguageRepository.kt @@ -4,6 +4,7 @@ import io.tolgee.model.Language import io.tolgee.model.dataImport.Import import io.tolgee.model.dataImport.ImportLanguage import io.tolgee.model.views.ImportLanguageView +import org.springframework.context.annotation.Lazy import org.springframework.data.domain.Page import org.springframework.data.domain.Pageable import org.springframework.data.jpa.repository.JpaRepository @@ -14,6 +15,7 @@ import org.springframework.transaction.annotation.Transactional import java.util.* @Repository +@Lazy interface ImportLanguageRepository : JpaRepository { companion object { private const val VIEW_BASE_QUERY = """ diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/dataImport/ImportRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/dataImport/ImportRepository.kt index 8c5bc0139e..bc1811295a 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/dataImport/ImportRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/dataImport/ImportRepository.kt @@ -1,11 +1,13 @@ package io.tolgee.repository.dataImport import io.tolgee.model.dataImport.Import +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.Query import org.springframework.stereotype.Repository @Repository +@Lazy interface ImportRepository : JpaRepository { @Query( """ diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/dataImport/ImportTranslationRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/dataImport/ImportTranslationRepository.kt index b9a43402ec..bbda4f1fd9 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/dataImport/ImportTranslationRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/dataImport/ImportTranslationRepository.kt @@ -4,6 +4,7 @@ import io.tolgee.model.dataImport.Import import io.tolgee.model.dataImport.ImportLanguage import io.tolgee.model.dataImport.ImportTranslation import io.tolgee.model.views.ImportTranslationView +import org.springframework.context.annotation.Lazy import org.springframework.data.domain.Page import org.springframework.data.domain.Pageable import org.springframework.data.jpa.repository.JpaRepository @@ -13,6 +14,7 @@ import org.springframework.stereotype.Repository import org.springframework.transaction.annotation.Transactional @Repository +@Lazy interface ImportTranslationRepository : JpaRepository { @Query( """ diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/dataImport/issues/ImportFileIssueParamRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/dataImport/issues/ImportFileIssueParamRepository.kt index a35de151b5..3a72e2f897 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/dataImport/issues/ImportFileIssueParamRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/dataImport/issues/ImportFileIssueParamRepository.kt @@ -2,6 +2,7 @@ package io.tolgee.repository.dataImport.issues import io.tolgee.model.dataImport.Import import io.tolgee.model.dataImport.issues.ImportFileIssueParam +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.Modifying import org.springframework.data.jpa.repository.Query @@ -9,6 +10,7 @@ import org.springframework.stereotype.Repository import org.springframework.transaction.annotation.Transactional @Repository +@Lazy interface ImportFileIssueParamRepository : JpaRepository { @Transactional @Modifying diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/dataImport/issues/ImportFileIssueRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/dataImport/issues/ImportFileIssueRepository.kt index c351a39779..6567733221 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/dataImport/issues/ImportFileIssueRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/dataImport/issues/ImportFileIssueRepository.kt @@ -3,6 +3,7 @@ package io.tolgee.repository.dataImport.issues import io.tolgee.model.dataImport.Import import io.tolgee.model.dataImport.issues.ImportFileIssue import io.tolgee.model.views.ImportFileIssueView +import org.springframework.context.annotation.Lazy import org.springframework.data.domain.Page import org.springframework.data.domain.Pageable import org.springframework.data.jpa.repository.JpaRepository @@ -12,6 +13,7 @@ import org.springframework.stereotype.Repository import org.springframework.transaction.annotation.Transactional @Repository +@Lazy interface ImportFileIssueRepository : JpaRepository { @Query("""select ifi from ImportFileIssue ifi where ifi.file.id = :fileId""") fun findAllByFileIdView( diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/machineTranslation/MachineTranslationCreditBucketRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/machineTranslation/MachineTranslationCreditBucketRepository.kt index f63923f16d..361e9fc815 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/machineTranslation/MachineTranslationCreditBucketRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/machineTranslation/MachineTranslationCreditBucketRepository.kt @@ -2,10 +2,12 @@ package io.tolgee.repository.machineTranslation import io.tolgee.model.MtCreditBucket import io.tolgee.model.Organization +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.JpaRepository import org.springframework.stereotype.Repository @Repository +@Lazy interface MachineTranslationCreditBucketRepository : JpaRepository { fun findByOrganization(organization: Organization): MtCreditBucket? } diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/machineTranslation/MtServiceConfigRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/machineTranslation/MtServiceConfigRepository.kt index af2e09669a..bf2307b585 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/machineTranslation/MtServiceConfigRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/machineTranslation/MtServiceConfigRepository.kt @@ -1,11 +1,13 @@ package io.tolgee.repository.machineTranslation import io.tolgee.model.mtServiceConfig.MtServiceConfig +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.Query import org.springframework.stereotype.Repository @Repository +@Lazy interface MtServiceConfigRepository : JpaRepository { @Query( """ diff --git a/backend/data/src/main/kotlin/io/tolgee/repository/translation/TranslationCommentRepository.kt b/backend/data/src/main/kotlin/io/tolgee/repository/translation/TranslationCommentRepository.kt index c5093504c6..5e17e632ee 100644 --- a/backend/data/src/main/kotlin/io/tolgee/repository/translation/TranslationCommentRepository.kt +++ b/backend/data/src/main/kotlin/io/tolgee/repository/translation/TranslationCommentRepository.kt @@ -2,6 +2,7 @@ package io.tolgee.repository.translation import io.tolgee.model.translation.Translation import io.tolgee.model.translation.TranslationComment +import org.springframework.context.annotation.Lazy import org.springframework.data.domain.Page import org.springframework.data.domain.Pageable import org.springframework.data.jpa.repository.JpaRepository @@ -9,6 +10,7 @@ import org.springframework.data.jpa.repository.Query import org.springframework.stereotype.Repository @Repository +@Lazy interface TranslationCommentRepository : JpaRepository { fun deleteAllByIdIn(ids: List) diff --git a/backend/data/src/main/kotlin/io/tolgee/service/ImageUploadService.kt b/backend/data/src/main/kotlin/io/tolgee/service/ImageUploadService.kt index 359e5ea908..e807e25a5c 100644 --- a/backend/data/src/main/kotlin/io/tolgee/service/ImageUploadService.kt +++ b/backend/data/src/main/kotlin/io/tolgee/service/ImageUploadService.kt @@ -12,6 +12,7 @@ import io.tolgee.model.UserAccount import io.tolgee.repository.UploadedImageRepository import io.tolgee.util.ImageConverter import org.slf4j.LoggerFactory +import org.springframework.context.annotation.Lazy import org.springframework.core.io.InputStreamSource import org.springframework.scheduling.annotation.Scheduled import org.springframework.stereotype.Service @@ -24,6 +25,7 @@ import kotlin.streams.asSequence @Service class ImageUploadService( + @Lazy val uploadedImageRepository: UploadedImageRepository, val fileStorage: FileStorage, val dateProvider: CurrentDateProvider, diff --git a/backend/data/src/main/kotlin/io/tolgee/service/security/UserAccountService.kt b/backend/data/src/main/kotlin/io/tolgee/service/security/UserAccountService.kt index b58e0aaf36..3f15d8091b 100644 --- a/backend/data/src/main/kotlin/io/tolgee/service/security/UserAccountService.kt +++ b/backend/data/src/main/kotlin/io/tolgee/service/security/UserAccountService.kt @@ -46,6 +46,7 @@ import java.util.* @Service class UserAccountService( + @Lazy private val userAccountRepository: UserAccountRepository, private val applicationEventPublisher: ApplicationEventPublisher, private val tolgeeProperties: TolgeeProperties, diff --git a/backend/security/src/main/kotlin/io/tolgee/security/authentication/AuthenticationFilter.kt b/backend/security/src/main/kotlin/io/tolgee/security/authentication/AuthenticationFilter.kt index 8979ddbeb1..96c54562a3 100644 --- a/backend/security/src/main/kotlin/io/tolgee/security/authentication/AuthenticationFilter.kt +++ b/backend/security/src/main/kotlin/io/tolgee/security/authentication/AuthenticationFilter.kt @@ -35,6 +35,7 @@ import org.springframework.stereotype.Component import org.springframework.web.filter.OncePerRequestFilter @Component +@Lazy class AuthenticationFilter( private val authenticationProperties: AuthenticationProperties, @Lazy @@ -43,8 +44,11 @@ class AuthenticationFilter( private val rateLimitService: RateLimitService, @Lazy private val jwtService: JwtService, + @Lazy private val userAccountService: UserAccountService, + @Lazy private val apiKeyService: ApiKeyService, + @Lazy private val patService: PatService, ) : OncePerRequestFilter() { override fun doFilterInternal( diff --git a/backend/security/src/main/kotlin/io/tolgee/security/ratelimit/GlobalIpRateLimitFilter.kt b/backend/security/src/main/kotlin/io/tolgee/security/ratelimit/GlobalIpRateLimitFilter.kt index 7a5caeda37..9e77379684 100644 --- a/backend/security/src/main/kotlin/io/tolgee/security/ratelimit/GlobalIpRateLimitFilter.kt +++ b/backend/security/src/main/kotlin/io/tolgee/security/ratelimit/GlobalIpRateLimitFilter.kt @@ -1,3 +1,4 @@ + /** * Copyright (C) 2023 Tolgee s.r.o. and contributors * @@ -20,12 +21,14 @@ import io.tolgee.security.authentication.AuthenticationFacade import jakarta.servlet.FilterChain import jakarta.servlet.http.HttpServletRequest import jakarta.servlet.http.HttpServletResponse +import org.springframework.context.annotation.Lazy import org.springframework.stereotype.Component import org.springframework.web.filter.OncePerRequestFilter @Component class GlobalIpRateLimitFilter( private val rateLimitService: RateLimitService, + @Lazy private val authenticationFacade: AuthenticationFacade, ) : OncePerRequestFilter() { override fun doFilterInternal( diff --git a/e2e/cypress/support/dataCyType.d.ts b/e2e/cypress/support/dataCyType.d.ts index 6bdbeb653c..e69de29bb2 100644 --- a/e2e/cypress/support/dataCyType.d.ts +++ b/e2e/cypress/support/dataCyType.d.ts @@ -1,561 +0,0 @@ -declare namespace DataCy { - export type Value = - "account-security-initial-password-set" | - "account-security-set-password-instructions-sent" | - "active-plan-license-key-input" | - "activity-compact" | - "activity-compact-detail-button" | - "activity-detail" | - "activity-detail-dialog" | - "add-box" | - "administration-access-message" | - "administration-cloud-plan-field-auto-assign-to-selected" | - "administration-cloud-plan-field-feature" | - "administration-cloud-plan-field-free" | - "administration-cloud-plan-field-included-mt-credits" | - "administration-cloud-plan-field-included-translations" | - "administration-cloud-plan-field-name" | - "administration-cloud-plan-field-price-monthly" | - "administration-cloud-plan-field-price-per-thousand-mt-credits" | - "administration-cloud-plan-field-price-per-thousand-translations" | - "administration-cloud-plan-field-price-yearly" | - "administration-cloud-plan-field-public" | - "administration-cloud-plan-field-stripe-product" | - "administration-cloud-plan-field-type" | - "administration-cloud-plan-field-type-item" | - "administration-cloud-plan-submit-button" | - "administration-cloud-plans-item" | - "administration-cloud-plans-item-delete" | - "administration-cloud-plans-item-edit" | - "administration-cloud-plans-item-public-badge" | - "administration-debug-customer-account-message" | - "administration-debug-customer-exit-button" | - "administration-ee-license-key-input" | - "administration-ee-license-release-key-button" | - "administration-ee-plan-field-feature" | - "administration-ee-plan-field-free" | - "administration-ee-plan-field-included-mt-credits" | - "administration-ee-plan-field-included-seats" | - "administration-ee-plan-field-name" | - "administration-ee-plan-field-price-monthly" | - "administration-ee-plan-field-price-per-seat" | - "administration-ee-plan-field-price-per-thousand-mt-credits" | - "administration-ee-plan-field-price-yearly" | - "administration-ee-plan-field-public" | - "administration-ee-plan-field-stripe-product" | - "administration-ee-plan-submit-button" | - "administration-ee-plans-item" | - "administration-ee-plans-item-delete" | - "administration-ee-plans-item-edit" | - "administration-ee-plans-item-public-badge" | - "administration-frame" | - "administration-organizations-list-item" | - "administration-organizations-projects-button" | - "administration-organizations-settings-button" | - "administration-user-debug-account" | - "administration-user-delete-user" | - "administration-user-disable-user" | - "administration-user-enable-user" | - "administration-user-menu" | - "administration-user-role-select" | - "administration-users-list-item" | - "ai-customization-project-description" | - "ai-customization-project-description-add" | - "ai-customization-project-description-edit" | - "ai-languages-description" | - "ai-languages-description-edit" | - "api-key-expiry-info" | - "api-key-list-item" | - "api-key-list-item-delete-button" | - "api-key-list-item-description" | - "api-key-list-item-last-used" | - "api-key-list-item-new-token-input" | - "api-key-list-item-regenerate-button" | - "api-keys-create-edit-dialog" | - "api-keys-project-select-item" | - "auto-avatar-img" | - "avatar-image" | - "avatar-menu-open-button" | - "avatar-remove-button" | - "avatar-upload-button" | - "avatar-upload-file-input" | - "base-language-select" | - "batch-operation-copy-source-select" | - "batch-operation-copy-source-select-item" | - "batch-operation-dialog-cancel-job" | - "batch-operation-dialog-end-status" | - "batch-operation-dialog-minimize" | - "batch-operation-dialog-ok" | - "batch-operations-section" | - "batch-operations-select" | - "batch-operations-submit-button" | - "batch-select-item" | - "billing-actual-extra-credits" | - "billing-actual-period" | - "billing-actual-period-end" | - "billing-actual-used-monthly-credits" | - "billing-actual-used-strings" | - "billing-estimated-costs" | - "billing-estimated-costs-open-button" | - "billing-invoice-item-number" | - "billing-invoice-usage-button" | - "billing-invoices-list" | - "billing-limit-exceeded-popover" | - "billing-period-switch" | - "billing-plan" | - "billing-plan-action-button" | - "billing-plan-monthly-price" | - "billing-plan-price-extra-seat" | - "billing-plan-price-extra-thousand-mt-credits" | - "billing-plan-price-extra-thousand-strings" | - "billing-plan-subtitle" | - "billing-progress-label-item" | - "billing-self-hosted-ee-plan-subscribe-button" | - "billing-subscriptions-cloud-button" | - "billing-subscriptions-self-hosted-ee-button" | - "billing-upgrade-preview-confirm-button" | - "billing-usage-table" | - "billing_period_annual" | - "checkbox-group-multiselect" | - "comment" | - "comment-menu" | - "comment-menu-delete" | - "comment-menu-needs-resolution" | - "comment-resolve" | - "comment-text" | - "content-delivery-add-button" | - "content-delivery-auto-publish-checkbox" | - "content-delivery-delete-button" | - "content-delivery-form-custom-slug" | - "content-delivery-form-name" | - "content-delivery-form-save" | - "content-delivery-item-edit" | - "content-delivery-item-publish" | - "content-delivery-item-type" | - "content-delivery-list-item" | - "content-delivery-prune-before-publish-checkbox" | - "content-delivery-storage-selector" | - "content-delivery-storage-selector-item" | - "content-delivery-subtitle" | - "dashboard-projects-list-item" | - "default-namespace-select" | - "delete-user-button" | - "developer-menu-content-delivery" | - "developer-menu-storage" | - "developer-menu-webhooks" | - "dropzone" | - "dropzone-inner" | - "edit-pat-dialog-content" | - "edit-pat-dialog-description-input" | - "edit-pat-dialog-title" | - "expiration-date-field" | - "expiration-date-picker" | - "expiration-select" | - "export-format-selector" | - "export-format-selector-item" | - "export-language-selector" | - "export-language-selector-item" | - "export-message-format-selector" | - "export-message-format-selector-item" | - "export-namespace-selector" | - "export-namespace-selector-item" | - "export-nested-selector" | - "export-state-selector" | - "export-state-selector-item" | - "export-submit-button" | - "export-support_arrays-selector" | - "former-user-name" | - "generate-api-key-dialog-description-input" | - "generate-pat-dialog-content" | - "generate-pat-dialog-description-input" | - "generate-pat-dialog-title" | - "global-base-view-content" | - "global-base-view-title" | - "global-confirmation-cancel" | - "global-confirmation-confirm" | - "global-confirmation-dialog" | - "global-confirmation-hard-mode-text-field" | - "global-editor" | - "global-empty-list" | - "global-form-cancel-button" | - "global-form-save-button" | - "global-form-select" | - "global-language-menu" | - "global-list-items" | - "global-list-pagination" | - "global-list-search" | - "global-loading" | - "global-paginated-list" | - "global-plus-button" | - "global-search-field" | - "global-snackbars" | - "global-user-menu-button" | - "import-conflict-resolution-dialog" | - "import-conflicts-not-resolved-dialog" | - "import-conflicts-not-resolved-dialog-cancel-button" | - "import-conflicts-not-resolved-dialog-resolve-button" | - "import-convert-placeholders-to-icu-checkbox" | - "import-file-error" | - "import-file-error-collapse-button" | - "import-file-error-more-less-button" | - "import-file-input" | - "import-file-issues-button" | - "import-file-issues-dialog" | - "import-override-key-descriptions-checkbox" | - "import-progress" | - "import-progress-overlay" | - "import-resolution-dialog-accept-imported-button" | - "import-resolution-dialog-accept-old-button" | - "import-resolution-dialog-close-button" | - "import-resolution-dialog-conflict-count" | - "import-resolution-dialog-data-row" | - "import-resolution-dialog-existing-translation" | - "import-resolution-dialog-key-name" | - "import-resolution-dialog-new-translation" | - "import-resolution-dialog-resolved-count" | - "import-resolution-dialog-show-resolved-switch" | - "import-resolution-dialog-translation-check" | - "import-resolution-dialog-translation-loading" | - "import-resolution-translation-expand-button" | - "import-result-delete-language-button" | - "import-result-file-cell" | - "import-result-file-warnings" | - "import-result-language-menu-cell" | - "import-result-namespace-cell" | - "import-result-resolve-button" | - "import-result-resolved-conflicts-cell" | - "import-result-row" | - "import-result-show-all-translations-button" | - "import-result-total-count-cell" | - "import-row-language-select-clear-button" | - "import-row-language-select-form-control" | - "import-show-data-dialog" | - "import_apply_import_button" | - "import_cancel_import_button" | - "integrate-api-key-selector-create-new-item" | - "integrate-api-key-selector-item" | - "integrate-api-key-selector-select" | - "integrate-api-key-selector-select-input" | - "integrate-choose-your-weapon-step-content" | - "integrate-choose-your-weapon-step-label" | - "integrate-go-to-docs-button" | - "integrate-guide" | - "integrate-select-api-key-step-content" | - "integrate-select-api-key-step-label" | - "integrate-weapon-selector-button" | - "invitation-dialog-close-button" | - "invitation-dialog-input-field" | - "invitation-dialog-invite-button" | - "invitation-dialog-role-button" | - "invitation-dialog-type-email-button" | - "invitation-dialog-type-link-button" | - "invite-generate-button" | - "key-edit-tab-advanced" | - "key-edit-tab-context" | - "key-edit-tab-custom-properties" | - "key-edit-tab-general" | - "key-plural-checkbox" | - "key-plural-checkbox-expand" | - "key-plural-variable-name" | - "language-ai-prompt-dialog-description-input" | - "language-ai-prompt-dialog-save" | - "language-delete-button" | - "language-modify-form" | - "languages-add-dialog-submit" | - "languages-create-autocomplete-field" | - "languages-create-autocomplete-suggested-option" | - "languages-create-cancel-prepared-button" | - "languages-create-customize-button" | - "languages-flag-selector-open-button" | - "languages-menu-ai-prompt-customization" | - "languages-menu-machine-translation" | - "languages-menu-project-languages" | - "languages-modify-apply-button" | - "languages-modify-cancel-button" | - "languages-prepared-language-box" | - "login-button" | - "machine-translations-settings-language-enabled-service" | - "machine-translations-settings-language-options" | - "machine-translations-settings-language-primary-service" | - "mfa-disable-button" | - "mfa-disable-dialog" | - "mfa-disable-dialog-content" | - "mfa-disable-dialog-password-input" | - "mfa-disable-dialog-title" | - "mfa-enable-button" | - "mfa-enable-dialog" | - "mfa-enable-dialog-content" | - "mfa-enable-dialog-otp-input" | - "mfa-enable-dialog-password-input" | - "mfa-enable-dialog-title" | - "mfa-enable-dialog-totp-key" | - "mfa-recovery-button" | - "mfa-recovery-codes-dialog" | - "mfa-recovery-codes-dialog-close" | - "mfa-recovery-codes-dialog-content" | - "mfa-recovery-codes-dialog-password-input" | - "mfa-recovery-codes-dialog-title" | - "mt-language-dialog-auto-for-import" | - "mt-language-dialog-auto-machine-translation" | - "mt-language-dialog-auto-translation-memory" | - "mt-language-dialog-enabled-checkbox" | - "mt-language-dialog-formality-select" | - "mt-language-dialog-formality-select-item" | - "mt-language-dialog-primary-radio" | - "mt-language-dialog-save" | - "mt-language-dialog-service-label" | - "namespace-value" | - "namespaces-banner-content" | - "namespaces-banner-menu" | - "namespaces-banner-menu-button" | - "namespaces-banner-menu-option" | - "namespaces-rename-cancel" | - "namespaces-rename-confirm" | - "namespaces-rename-text-field" | - "namespaces-select-cancel" | - "namespaces-select-confirm" | - "namespaces-select-text-field" | - "namespaces-selector" | - "navigation-item" | - "organization-address-part-field" | - "organization-description-field" | - "organization-invitation-cancel-button" | - "organization-invitation-copy-button" | - "organization-invitation-item" | - "organization-member-item" | - "organization-member-leave-button" | - "organization-members-remove-user-button" | - "organization-name-field" | - "organization-profile" | - "organization-profile-delete-button" | - "organization-profile-leave-button" | - "organization-role-menu" | - "organization-role-menu-button" | - "organization-role-select-item" | - "organization-side-menu" | - "organization-switch" | - "organization-switch-item" | - "organization-switch-new" | - "organization-switch-search" | - "pat-expiry-info" | - "pat-list-item" | - "pat-list-item-alert" | - "pat-list-item-delete-button" | - "pat-list-item-description" | - "pat-list-item-last-used" | - "pat-list-item-new-token-input" | - "pat-list-item-regenerate-button" | - "permissions-advanced-checkbox" | - "permissions-advanced-item" | - "permissions-language-menu-button" | - "permissions-menu" | - "permissions-menu-basic" | - "permissions-menu-button" | - "permissions-menu-close" | - "permissions-menu-granular" | - "permissions-menu-inherited-message" | - "permissions-menu-reset-to-organization" | - "permissions-menu-save" | - "project-ai-prompt-dialog-description-input" | - "project-ai-prompt-dialog-save" | - "project-dashboard-activity-chart" | - "project-dashboard-activity-list" | - "project-dashboard-base-word-count" | - "project-dashboard-description" | - "project-dashboard-key-count" | - "project-dashboard-language-bar" | - "project-dashboard-language-count" | - "project-dashboard-language-label-keys" | - "project-dashboard-language-label-percentage" | - "project-dashboard-language-label-state" | - "project-dashboard-language-label-words" | - "project-dashboard-language-menu" | - "project-dashboard-language-menu-export" | - "project-dashboard-language-menu-settings" | - "project-dashboard-members" | - "project-dashboard-members-count" | - "project-dashboard-progress" | - "project-dashboard-project-totals" | - "project-dashboard-reviewed-percentage" | - "project-dashboard-strings" | - "project-dashboard-strings-count" | - "project-dashboard-tags" | - "project-dashboard-text" | - "project-dashboard-translated-percentage" | - "project-delete-button" | - "project-leave-button" | - "project-list-languages" | - "project-list-languages-item" | - "project-list-more-button" | - "project-list-translations-button" | - "project-member-item" | - "project-member-revoke-button" | - "project-menu-item" | - "project-menu-item-dashboard" | - "project-menu-item-developer" | - "project-menu-item-export" | - "project-menu-item-import" | - "project-menu-item-integrate" | - "project-menu-item-languages" | - "project-menu-item-members" | - "project-menu-item-projects" | - "project-menu-item-settings" | - "project-menu-item-translations" | - "project-menu-items" | - "project-mt-dialog-settings-inherited" | - "project-name-field" | - "project-settings" | - "project-settings-button" | - "project-settings-delete-button" | - "project-settings-description" | - "project-settings-languages" | - "project-settings-languages-add" | - "project-settings-languages-list-edit-button" | - "project-settings-languages-list-name" | - "project-settings-menu-advanced" | - "project-settings-menu-general" | - "project-settings-name" | - "project-settings-transfer-button" | - "project-settings-use-tolgee-placeholders-checkbox" | - "project-states-bar-bar" | - "project-states-bar-dot" | - "project-states-bar-legend" | - "project-states-bar-root" | - "project-states-bar-state-progress" | - "project-transfer-autocomplete-field" | - "project-transfer-autocomplete-suggested-option" | - "project-transfer-confirmation-field" | - "project-transfer-dialog" | - "quick-start-action" | - "quick-start-dialog" | - "quick-start-finish-action" | - "quick-start-finish-step" | - "quick-start-highlight" | - "quick-start-highlight-ok" | - "quick-start-step" | - "regenerate-pat-dialog-content" | - "regenerate-pat-dialog-title" | - "resend-email-button" | - "screenshot-image" | - "screenshot-thumbnail" | - "screenshot-thumbnail-delete" | - "search-select" | - "search-select-item" | - "search-select-new" | - "search-select-search" | - "self-hosted-ee-active-plan" | - "sensitive-dialog-otp-input" | - "sensitive-dialog-password-input" | - "sensitive-protection-dialog" | - "settings-menu-item" | - "sign-up-submit-button" | - "spending-limit-exceeded-popover" | - "storage-add-item-button" | - "storage-form-azure-connection-string" | - "storage-form-azure-container-name" | - "storage-form-delete" | - "storage-form-name" | - "storage-form-public-url-prefix" | - "storage-form-s3-access-key" | - "storage-form-s3-bucket-name" | - "storage-form-s3-endpoint" | - "storage-form-s3-secret-key" | - "storage-form-s3-signing-region" | - "storage-form-save" | - "storage-form-test" | - "storage-form-type-azure" | - "storage-form-type-s3" | - "storage-item-edit" | - "storage-list-item" | - "storage-subtitle" | - "tag-autocomplete-input" | - "tag-autocomplete-option" | - "this-is-the-element" | - "top-banner" | - "top-banner-content" | - "top-banner-dismiss-button" | - "transfer-project-apply-button" | - "translation-create-description-input" | - "translation-create-key-input" | - "translation-create-namespace-input" | - "translation-create-translation-input" | - "translation-edit-delete-button" | - "translation-edit-key-field" | - "translation-edit-translation-field" | - "translation-editor" | - "translation-field-label" | - "translation-history-item" | - "translation-panel" | - "translation-panel-content" | - "translation-panel-toggle" | - "translation-plural-parameter" | - "translation-plural-variant" | - "translation-state-button" | - "translation-text" | - "translation-tools-machine-translation-item" | - "translation-tools-translation-memory-item" | - "translations-add-button" | - "translations-auto-translated-clear-button" | - "translations-auto-translated-indicator" | - "translations-cell-cancel-button" | - "translations-cell-comments-button" | - "translations-cell-edit-button" | - "translations-cell-insert-base-button" | - "translations-cell-save-button" | - "translations-cell-screenshots-button" | - "translations-cell-switch-mode" | - "translations-comments-input" | - "translations-comments-load-more-button" | - "translations-filter-clear-all" | - "translations-filter-option" | - "translations-filter-select" | - "translations-filters-subheader" | - "translations-history-load-more-button" | - "translations-key-cell-description" | - "translations-key-count" | - "translations-key-edit-description-field" | - "translations-key-edit-key-field" | - "translations-language-select-form-control" | - "translations-language-select-item" | - "translations-namespace-banner" | - "translations-outdated-clear-button" | - "translations-outdated-indicator" | - "translations-row" | - "translations-row-checkbox" | - "translations-select-all-button" | - "translations-shortcuts-command" | - "translations-state-indicator" | - "translations-table-cell" | - "translations-table-cell-language" | - "translations-table-cell-translation" | - "translations-tag" | - "translations-tag-add" | - "translations-tag-close" | - "translations-tag-input" | - "translations-tags-add" | - "translations-toolbar-counter" | - "translations-toolbar-to-top" | - "translations-view-list" | - "translations-view-list-button" | - "translations-view-table" | - "translations-view-table-button" | - "user-delete-organization-message-item" | - "user-menu-language-switch" | - "user-menu-logout" | - "user-menu-organization-settings" | - "user-menu-organization-switch" | - "user-menu-server-administration" | - "user-menu-theme-switch" | - "user-menu-user-settings" | - "user-profile" | - "webhook-form-cancel" | - "webhook-form-delete" | - "webhook-form-save" | - "webhook-form-url" | - "webhooks-add-item-button" | - "webhooks-item-edit" | - "webhooks-item-show-secret" | - "webhooks-item-test" | - "webhooks-list-item" | - "webhooks-subtitle" -} \ No newline at end of file diff --git a/ee/backend/app/src/main/kotlin/io/tolgee/ee/repository/EeSubscriptionRepository.kt b/ee/backend/app/src/main/kotlin/io/tolgee/ee/repository/EeSubscriptionRepository.kt index a6e9d62f0e..9bf9d172f1 100644 --- a/ee/backend/app/src/main/kotlin/io/tolgee/ee/repository/EeSubscriptionRepository.kt +++ b/ee/backend/app/src/main/kotlin/io/tolgee/ee/repository/EeSubscriptionRepository.kt @@ -1,8 +1,10 @@ package io.tolgee.ee.repository import io.tolgee.ee.model.EeSubscription +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.JpaRepository import org.springframework.stereotype.Repository @Repository +@Lazy interface EeSubscriptionRepository : JpaRepository diff --git a/ee/backend/app/src/main/kotlin/io/tolgee/ee/repository/slackIntegration/OrganizationSlackWorkspaceRepository.kt b/ee/backend/app/src/main/kotlin/io/tolgee/ee/repository/slackIntegration/OrganizationSlackWorkspaceRepository.kt index 558e603208..689a3976da 100644 --- a/ee/backend/app/src/main/kotlin/io/tolgee/ee/repository/slackIntegration/OrganizationSlackWorkspaceRepository.kt +++ b/ee/backend/app/src/main/kotlin/io/tolgee/ee/repository/slackIntegration/OrganizationSlackWorkspaceRepository.kt @@ -1,11 +1,13 @@ package io.tolgee.ee.repository.slackIntegration import io.tolgee.model.slackIntegration.OrganizationSlackWorkspace +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.Query import org.springframework.stereotype.Repository @Repository +@Lazy interface OrganizationSlackWorkspaceRepository : JpaRepository { fun findBySlackTeamId(teamId: String): OrganizationSlackWorkspace? diff --git a/ee/backend/app/src/main/kotlin/io/tolgee/ee/repository/slackIntegration/SavedSlackMessageRepository.kt b/ee/backend/app/src/main/kotlin/io/tolgee/ee/repository/slackIntegration/SavedSlackMessageRepository.kt index f6eb7ceca2..0512240e89 100644 --- a/ee/backend/app/src/main/kotlin/io/tolgee/ee/repository/slackIntegration/SavedSlackMessageRepository.kt +++ b/ee/backend/app/src/main/kotlin/io/tolgee/ee/repository/slackIntegration/SavedSlackMessageRepository.kt @@ -1,6 +1,7 @@ package io.tolgee.ee.repository.slackIntegration import io.tolgee.model.slackIntegration.SavedSlackMessage +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.Modifying import org.springframework.data.jpa.repository.Query @@ -10,6 +11,7 @@ import java.util.* @Transactional @Repository +@Lazy interface SavedSlackMessageRepository : JpaRepository { @Modifying @Query( diff --git a/ee/backend/app/src/main/kotlin/io/tolgee/ee/repository/slackIntegration/SlackConfigPreferenceRepository.kt b/ee/backend/app/src/main/kotlin/io/tolgee/ee/repository/slackIntegration/SlackConfigPreferenceRepository.kt index 7525a446d8..a54b8b10c7 100644 --- a/ee/backend/app/src/main/kotlin/io/tolgee/ee/repository/slackIntegration/SlackConfigPreferenceRepository.kt +++ b/ee/backend/app/src/main/kotlin/io/tolgee/ee/repository/slackIntegration/SlackConfigPreferenceRepository.kt @@ -1,8 +1,10 @@ package io.tolgee.ee.repository.slackIntegration import io.tolgee.model.slackIntegration.SlackConfigPreference +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.JpaRepository import org.springframework.stereotype.Repository @Repository +@Lazy interface SlackConfigPreferenceRepository : JpaRepository diff --git a/ee/backend/app/src/main/kotlin/io/tolgee/ee/repository/slackIntegration/SlackConfigRepository.kt b/ee/backend/app/src/main/kotlin/io/tolgee/ee/repository/slackIntegration/SlackConfigRepository.kt index 443b705a48..cbee17ec98 100644 --- a/ee/backend/app/src/main/kotlin/io/tolgee/ee/repository/slackIntegration/SlackConfigRepository.kt +++ b/ee/backend/app/src/main/kotlin/io/tolgee/ee/repository/slackIntegration/SlackConfigRepository.kt @@ -1,6 +1,7 @@ package io.tolgee.ee.repository.slackIntegration import io.tolgee.model.slackIntegration.SlackConfig +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.Query import org.springframework.data.repository.query.Param @@ -8,6 +9,7 @@ import org.springframework.stereotype.Repository import org.springframework.transaction.annotation.Transactional @Repository +@Lazy interface SlackConfigRepository : JpaRepository { fun findByProjectIdAndChannelId( id: Long, diff --git a/ee/backend/app/src/main/kotlin/io/tolgee/ee/repository/slackIntegration/SlackMessageInfoRepository.kt b/ee/backend/app/src/main/kotlin/io/tolgee/ee/repository/slackIntegration/SlackMessageInfoRepository.kt index ae40da1dc0..02cf08a719 100644 --- a/ee/backend/app/src/main/kotlin/io/tolgee/ee/repository/slackIntegration/SlackMessageInfoRepository.kt +++ b/ee/backend/app/src/main/kotlin/io/tolgee/ee/repository/slackIntegration/SlackMessageInfoRepository.kt @@ -1,10 +1,12 @@ package io.tolgee.ee.repository.slackIntegration import io.tolgee.model.slackIntegration.SlackMessageInfo +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.JpaRepository import org.springframework.stereotype.Repository @Repository +@Lazy interface SlackMessageInfoRepository : JpaRepository { fun findBySlackMessageSlackConfigIdAndLanguageTagAndSlackMessageKeyId( configId: Long, diff --git a/ee/backend/app/src/main/kotlin/io/tolgee/ee/repository/slackIntegration/SlackUserConnectionRepository.kt b/ee/backend/app/src/main/kotlin/io/tolgee/ee/repository/slackIntegration/SlackUserConnectionRepository.kt index fe16950b01..1f101544a0 100644 --- a/ee/backend/app/src/main/kotlin/io/tolgee/ee/repository/slackIntegration/SlackUserConnectionRepository.kt +++ b/ee/backend/app/src/main/kotlin/io/tolgee/ee/repository/slackIntegration/SlackUserConnectionRepository.kt @@ -1,10 +1,12 @@ package io.tolgee.ee.repository.slackIntegration import io.tolgee.model.slackIntegration.SlackUserConnection +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.JpaRepository import org.springframework.stereotype.Repository @Repository +@Lazy interface SlackUserConnectionRepository : JpaRepository { fun findBySlackUserId(slackUserId: String): SlackUserConnection? diff --git a/ee/backend/app/src/main/kotlin/io/tolgee/ee/service/slackIntegration/SavedSlackMessageService.kt b/ee/backend/app/src/main/kotlin/io/tolgee/ee/service/slackIntegration/SavedSlackMessageService.kt index 37b57be4ba..cb428ac9eb 100644 --- a/ee/backend/app/src/main/kotlin/io/tolgee/ee/service/slackIntegration/SavedSlackMessageService.kt +++ b/ee/backend/app/src/main/kotlin/io/tolgee/ee/service/slackIntegration/SavedSlackMessageService.kt @@ -1,6 +1,5 @@ package io.tolgee.ee.service.slackIntegration -import com.fasterxml.jackson.databind.ObjectMapper import io.tolgee.component.CurrentDateProvider import io.tolgee.ee.component.slackIntegration.SavedMessageDto import io.tolgee.ee.repository.slackIntegration.SavedSlackMessageRepository @@ -8,15 +7,17 @@ import io.tolgee.ee.repository.slackIntegration.SlackConfigRepository import io.tolgee.model.slackIntegration.SavedSlackMessage import io.tolgee.util.addMinutes import jakarta.transaction.Transactional +import org.springframework.context.annotation.Lazy import org.springframework.scheduling.annotation.Scheduled import org.springframework.stereotype.Service @Service class SavedSlackMessageService( + @Lazy private val savedSlackMessageRepository: SavedSlackMessageRepository, + @Lazy private val slackConfigRepository: SlackConfigRepository, private val currentDateProvider: CurrentDateProvider, - private val objectMapper: ObjectMapper, private val slackMessageInfoService: SlackMessageInfoService, ) { @Transactional From 48ec02be3cf5d8bd75ef9b18c920a02775c8b510 Mon Sep 17 00:00:00 2001 From: Jan Cizmar Date: Mon, 9 Sep 2024 10:33:20 +0200 Subject: [PATCH 02/19] chore: Update Spring boot to 3.3.3 --- .../kotlin/io/tolgee/configuration/MetricsConfiguration.kt | 4 ++-- .../src/main/kotlin/io/tolgee/model/dataImport/ImportFile.kt | 2 +- gradle.properties | 4 ++-- settings.gradle | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/backend/data/src/main/kotlin/io/tolgee/configuration/MetricsConfiguration.kt b/backend/data/src/main/kotlin/io/tolgee/configuration/MetricsConfiguration.kt index 1fe35b12b4..99eb6639b4 100644 --- a/backend/data/src/main/kotlin/io/tolgee/configuration/MetricsConfiguration.kt +++ b/backend/data/src/main/kotlin/io/tolgee/configuration/MetricsConfiguration.kt @@ -1,8 +1,8 @@ package io.tolgee.configuration import io.micrometer.core.instrument.MeterRegistry -import io.micrometer.prometheus.PrometheusConfig -import io.micrometer.prometheus.PrometheusMeterRegistry +import io.micrometer.prometheusmetrics.PrometheusConfig +import io.micrometer.prometheusmetrics.PrometheusMeterRegistry import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration diff --git a/backend/data/src/main/kotlin/io/tolgee/model/dataImport/ImportFile.kt b/backend/data/src/main/kotlin/io/tolgee/model/dataImport/ImportFile.kt index 979fbb10e5..5202c0f4b1 100644 --- a/backend/data/src/main/kotlin/io/tolgee/model/dataImport/ImportFile.kt +++ b/backend/data/src/main/kotlin/io/tolgee/model/dataImport/ImportFile.kt @@ -17,7 +17,7 @@ class ImportFile( @field:Size(max = 2000) @Column(length = 2000) var name: String?, - @ManyToOne(optional = false) + @field:ManyToOne(optional = false) val import: Import, ) : StandardAuditModel() { @OneToMany(mappedBy = "file", orphanRemoval = true) diff --git a/gradle.properties b/gradle.properties index 44e057a471..921f95549a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,8 +1,8 @@ kotlinVersion=1.9.21 -springBootVersion=3.1.5 +springBootVersion=3.3.3 springDocVersion=2.3.0 jjwtVersion=0.11.2 -hibernateVersion=6.4.1.Final +hibernateVersion=6.5.2.Final amazonAwsSdkVersion=2.20.8 springDependencyManagementVersion=1.0.11.RELEASE org.gradle.jvmargs=-Xmx6g -Dkotlin.daemon.jvm.options=-Xmx6g diff --git a/settings.gradle b/settings.gradle index f1edc57be3..345e8ee887 100644 --- a/settings.gradle +++ b/settings.gradle @@ -67,7 +67,7 @@ dependencyResolutionManagement { library('hibernateTypes', "io.hypersistence:hypersistence-utils-hibernate-63:3.7.0") library('redissonSpringBootStarter', "org.redisson:redisson-spring-boot-starter:3.26.0") library('postHog', 'com.posthog.java:posthog:1.1.1') - library('micrometerPrometheus', "io.micrometer:micrometer-registry-prometheus:1.9.12") + library('micrometerPrometheus', "io.micrometer:micrometer-registry-prometheus:1.13.3") library('mailjet', "com.mailjet:mailjet-client:5.2.5") library('azureBlob', 'com.azure.spring:spring-cloud-azure-starter-storage-blob:5.11.0') library('slackApiClient', "com.slack.api:slack-api-client:$slackSdkVersion") From 15abb2ce2e035d0a1595b51a0a741a130512ab87 Mon Sep 17 00:00:00 2001 From: Jan Cizmar Date: Mon, 9 Sep 2024 10:52:09 +0200 Subject: [PATCH 03/19] chore: Update kotlin to 2.0.20 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 921f95549a..374d3ed257 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -kotlinVersion=1.9.21 +kotlinVersion=2.0.20 springBootVersion=3.3.3 springDocVersion=2.3.0 jjwtVersion=0.11.2 From 2ea993b2dc39594666d81dc648ca6d81d2f6be04 Mon Sep 17 00:00:00 2001 From: Jan Cizmar Date: Mon, 9 Sep 2024 11:01:16 +0200 Subject: [PATCH 04/19] chore: Remove validation useless config --- backend/app/src/test/resources/application.yaml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/backend/app/src/test/resources/application.yaml b/backend/app/src/test/resources/application.yaml index bc3fc8c26e..c67fbea1e5 100644 --- a/backend/app/src/test/resources/application.yaml +++ b/backend/app/src/test/resources/application.yaml @@ -17,14 +17,6 @@ spring: enableLazyInitialization: true enableDirtyTracking: true dialect: io.tolgee.dialects.postgres.CustomPostgreSQLDialect -# javax: -# persistence: -# validation: -# mode: none -# jakarta: -# persistence: -# validation: -# mode: none mvc: pathmatch: matching-strategy: ant_path_matcher From 60a1fb120f3b6adcaaaa6731dc6ae8634363ed5c Mon Sep 17 00:00:00 2001 From: Jan Cizmar Date: Mon, 9 Sep 2024 11:05:04 +0200 Subject: [PATCH 05/19] build: Fix java version in the pipelines --- .github/workflows/prerelease-alpha.yml | 2 +- .github/workflows/preview.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/reportIntermittentTests.yml | 8 ++++---- .github/workflows/test.yml | 10 +++++----- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/prerelease-alpha.yml b/.github/workflows/prerelease-alpha.yml index d28f49893c..4777b60b1a 100644 --- a/.github/workflows/prerelease-alpha.yml +++ b/.github/workflows/prerelease-alpha.yml @@ -14,7 +14,7 @@ jobs: - uses: actions/setup-java@v3 with: - java-version: 17 + java-version: 21 distribution: adopt - name: Setup node diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml index c85fb249eb..82e2ef6845 100644 --- a/.github/workflows/preview.yml +++ b/.github/workflows/preview.yml @@ -16,7 +16,7 @@ jobs: - uses: actions/setup-java@v3 with: - java-version: 17 + java-version: 21 distribution: adopt - name: Setup node diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 55360bd56e..895d8c172b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,7 +18,7 @@ jobs: - uses: actions/setup-java@v3 with: - java-version: 17 + java-version: 21 distribution: adopt - name: Setup node diff --git a/.github/workflows/reportIntermittentTests.yml b/.github/workflows/reportIntermittentTests.yml index de497dedc0..f99852877f 100644 --- a/.github/workflows/reportIntermittentTests.yml +++ b/.github/workflows/reportIntermittentTests.yml @@ -13,7 +13,7 @@ jobs: - uses: actions/setup-java@v3 with: - java-version: 17 + java-version: 21 distribution: adopt - name: Setup node @@ -80,7 +80,7 @@ jobs: - uses: actions/setup-java@v3 with: - java-version: 17 + java-version: 21 distribution: adopt - name: Setup node @@ -146,7 +146,7 @@ jobs: - uses: actions/setup-java@v3 with: - java-version: 17 + java-version: 21 distribution: adopt - name: Setup node @@ -232,7 +232,7 @@ jobs: - uses: actions/setup-java@v3 with: - java-version: 17 + java-version: 21 distribution: adopt - name: Cache Gradle packages diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5f3b10c61f..78e709019f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,7 +14,7 @@ jobs: - uses: actions/setup-java@v3 with: - java-version: 17 + java-version: 21 distribution: adopt - name: Setup node @@ -83,7 +83,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-java@v3 with: - java-version: 17 + java-version: 21 distribution: adopt - name: Setup node @@ -163,7 +163,7 @@ jobs: - uses: actions/setup-java@v3 with: - java-version: 17 + java-version: 21 distribution: adopt - name: Setup node @@ -269,7 +269,7 @@ jobs: - uses: actions/setup-java@v3 with: - java-version: 17 + java-version: 21 distribution: adopt - name: Cache Gradle packages @@ -420,7 +420,7 @@ jobs: - uses: actions/setup-java@v3 with: - java-version: 17 + java-version: 21 distribution: adopt - name: Setup node From bbdc6c7e7cce379cbcdc9d50e47dc5d992bfb5bc Mon Sep 17 00:00:00 2001 From: Jan Cizmar Date: Mon, 9 Sep 2024 11:19:20 +0200 Subject: [PATCH 06/19] fix: build and e2e checks --- build.gradle | 3 + e2e/cypress/support/dataCyType.d.ts | 561 ++++++++++++++++++++++++++++ 2 files changed, 564 insertions(+) diff --git a/build.gradle b/build.gradle index 6219835988..55e94f302b 100644 --- a/build.gradle +++ b/build.gradle @@ -140,6 +140,9 @@ ktlint { rootProject.subprojects { afterEvaluate { tasks.findByName("compileKotlin")?.onlyIf { System.getenv("SKIP_SERVER_BUILD") != "true" } + tasks.findByName("kaptGenerateStubsTestKotlin")?.onlyIf { System.getenv("SKIP_SERVER_BUILD") != "true" } + tasks.findByName("kaptGenerateStubsKotlin")?.onlyIf { System.getenv("SKIP_SERVER_BUILD") != "true" } + tasks.findByName("kaptKotlin")?.onlyIf { System.getenv("SKIP_SERVER_BUILD") != "true" } tasks.findByName("bootBuildInfo")?.onlyIf { System.getenv("SKIP_SERVER_BUILD") != "true" } tasks.findByName("compileJava")?.onlyIf { System.getenv("SKIP_SERVER_BUILD") != "true" } tasks.findByName("bootJarMainClassName")?.onlyIf { System.getenv("SKIP_SERVER_BUILD") != "true" } diff --git a/e2e/cypress/support/dataCyType.d.ts b/e2e/cypress/support/dataCyType.d.ts index e69de29bb2..5fc6a7d47b 100644 --- a/e2e/cypress/support/dataCyType.d.ts +++ b/e2e/cypress/support/dataCyType.d.ts @@ -0,0 +1,561 @@ +declare namespace DataCy { + export type Value = + "account-security-initial-password-set" | + "account-security-set-password-instructions-sent" | + "active-plan-license-key-input" | + "activity-compact" | + "activity-compact-detail-button" | + "activity-detail" | + "activity-detail-dialog" | + "add-box" | + "administration-access-message" | + "administration-cloud-plan-field-auto-assign-to-selected" | + "administration-cloud-plan-field-feature" | + "administration-cloud-plan-field-free" | + "administration-cloud-plan-field-included-mt-credits" | + "administration-cloud-plan-field-included-translations" | + "administration-cloud-plan-field-name" | + "administration-cloud-plan-field-price-monthly" | + "administration-cloud-plan-field-price-per-thousand-mt-credits" | + "administration-cloud-plan-field-price-per-thousand-translations" | + "administration-cloud-plan-field-price-yearly" | + "administration-cloud-plan-field-public" | + "administration-cloud-plan-field-stripe-product" | + "administration-cloud-plan-field-type" | + "administration-cloud-plan-field-type-item" | + "administration-cloud-plan-submit-button" | + "administration-cloud-plans-item" | + "administration-cloud-plans-item-delete" | + "administration-cloud-plans-item-edit" | + "administration-cloud-plans-item-public-badge" | + "administration-debug-customer-account-message" | + "administration-debug-customer-exit-button" | + "administration-ee-license-key-input" | + "administration-ee-license-release-key-button" | + "administration-ee-plan-field-feature" | + "administration-ee-plan-field-free" | + "administration-ee-plan-field-included-mt-credits" | + "administration-ee-plan-field-included-seats" | + "administration-ee-plan-field-name" | + "administration-ee-plan-field-price-monthly" | + "administration-ee-plan-field-price-per-seat" | + "administration-ee-plan-field-price-per-thousand-mt-credits" | + "administration-ee-plan-field-price-yearly" | + "administration-ee-plan-field-public" | + "administration-ee-plan-field-stripe-product" | + "administration-ee-plan-submit-button" | + "administration-ee-plans-item" | + "administration-ee-plans-item-delete" | + "administration-ee-plans-item-edit" | + "administration-ee-plans-item-public-badge" | + "administration-frame" | + "administration-organizations-list-item" | + "administration-organizations-projects-button" | + "administration-organizations-settings-button" | + "administration-user-debug-account" | + "administration-user-delete-user" | + "administration-user-disable-user" | + "administration-user-enable-user" | + "administration-user-menu" | + "administration-user-role-select" | + "administration-users-list-item" | + "ai-customization-project-description" | + "ai-customization-project-description-add" | + "ai-customization-project-description-edit" | + "ai-languages-description" | + "ai-languages-description-edit" | + "api-key-expiry-info" | + "api-key-list-item" | + "api-key-list-item-delete-button" | + "api-key-list-item-description" | + "api-key-list-item-last-used" | + "api-key-list-item-new-token-input" | + "api-key-list-item-regenerate-button" | + "api-keys-create-edit-dialog" | + "api-keys-project-select-item" | + "auto-avatar-img" | + "avatar-image" | + "avatar-menu-open-button" | + "avatar-remove-button" | + "avatar-upload-button" | + "avatar-upload-file-input" | + "base-language-select" | + "batch-operation-copy-source-select" | + "batch-operation-copy-source-select-item" | + "batch-operation-dialog-cancel-job" | + "batch-operation-dialog-end-status" | + "batch-operation-dialog-minimize" | + "batch-operation-dialog-ok" | + "batch-operations-section" | + "batch-operations-select" | + "batch-operations-submit-button" | + "batch-select-item" | + "billing-actual-extra-credits" | + "billing-actual-period" | + "billing-actual-period-end" | + "billing-actual-used-monthly-credits" | + "billing-actual-used-strings" | + "billing-estimated-costs" | + "billing-estimated-costs-open-button" | + "billing-invoice-item-number" | + "billing-invoice-usage-button" | + "billing-invoices-list" | + "billing-limit-exceeded-popover" | + "billing-period-switch" | + "billing-plan" | + "billing-plan-action-button" | + "billing-plan-monthly-price" | + "billing-plan-price-extra-seat" | + "billing-plan-price-extra-thousand-mt-credits" | + "billing-plan-price-extra-thousand-strings" | + "billing-plan-subtitle" | + "billing-progress-label-item" | + "billing-self-hosted-ee-plan-subscribe-button" | + "billing-subscriptions-cloud-button" | + "billing-subscriptions-self-hosted-ee-button" | + "billing-upgrade-preview-confirm-button" | + "billing-usage-table" | + "billing_period_annual" | + "checkbox-group-multiselect" | + "comment" | + "comment-menu" | + "comment-menu-delete" | + "comment-menu-needs-resolution" | + "comment-resolve" | + "comment-text" | + "content-delivery-add-button" | + "content-delivery-auto-publish-checkbox" | + "content-delivery-delete-button" | + "content-delivery-form-custom-slug" | + "content-delivery-form-name" | + "content-delivery-form-save" | + "content-delivery-item-edit" | + "content-delivery-item-publish" | + "content-delivery-item-type" | + "content-delivery-list-item" | + "content-delivery-prune-before-publish-checkbox" | + "content-delivery-storage-selector" | + "content-delivery-storage-selector-item" | + "content-delivery-subtitle" | + "dashboard-projects-list-item" | + "default-namespace-select" | + "delete-user-button" | + "developer-menu-content-delivery" | + "developer-menu-storage" | + "developer-menu-webhooks" | + "dropzone" | + "dropzone-inner" | + "edit-pat-dialog-content" | + "edit-pat-dialog-description-input" | + "edit-pat-dialog-title" | + "expiration-date-field" | + "expiration-date-picker" | + "expiration-select" | + "export-format-selector" | + "export-format-selector-item" | + "export-language-selector" | + "export-language-selector-item" | + "export-message-format-selector" | + "export-message-format-selector-item" | + "export-namespace-selector" | + "export-namespace-selector-item" | + "export-nested-selector" | + "export-state-selector" | + "export-state-selector-item" | + "export-submit-button" | + "export-support_arrays-selector" | + "former-user-name" | + "generate-api-key-dialog-description-input" | + "generate-pat-dialog-content" | + "generate-pat-dialog-description-input" | + "generate-pat-dialog-title" | + "global-base-view-content" | + "global-base-view-title" | + "global-confirmation-cancel" | + "global-confirmation-confirm" | + "global-confirmation-dialog" | + "global-confirmation-hard-mode-text-field" | + "global-editor" | + "global-empty-list" | + "global-form-cancel-button" | + "global-form-save-button" | + "global-form-select" | + "global-language-menu" | + "global-list-items" | + "global-list-pagination" | + "global-list-search" | + "global-loading" | + "global-paginated-list" | + "global-plus-button" | + "global-search-field" | + "global-snackbars" | + "global-user-menu-button" | + "import-conflict-resolution-dialog" | + "import-conflicts-not-resolved-dialog" | + "import-conflicts-not-resolved-dialog-cancel-button" | + "import-conflicts-not-resolved-dialog-resolve-button" | + "import-convert-placeholders-to-icu-checkbox" | + "import-file-error" | + "import-file-error-collapse-button" | + "import-file-error-more-less-button" | + "import-file-input" | + "import-file-issues-button" | + "import-file-issues-dialog" | + "import-override-key-descriptions-checkbox" | + "import-progress" | + "import-progress-overlay" | + "import-resolution-dialog-accept-imported-button" | + "import-resolution-dialog-accept-old-button" | + "import-resolution-dialog-close-button" | + "import-resolution-dialog-conflict-count" | + "import-resolution-dialog-data-row" | + "import-resolution-dialog-existing-translation" | + "import-resolution-dialog-key-name" | + "import-resolution-dialog-new-translation" | + "import-resolution-dialog-resolved-count" | + "import-resolution-dialog-show-resolved-switch" | + "import-resolution-dialog-translation-check" | + "import-resolution-dialog-translation-loading" | + "import-resolution-translation-expand-button" | + "import-result-delete-language-button" | + "import-result-file-cell" | + "import-result-file-warnings" | + "import-result-language-menu-cell" | + "import-result-namespace-cell" | + "import-result-resolve-button" | + "import-result-resolved-conflicts-cell" | + "import-result-row" | + "import-result-show-all-translations-button" | + "import-result-total-count-cell" | + "import-row-language-select-clear-button" | + "import-row-language-select-form-control" | + "import-show-data-dialog" | + "import_apply_import_button" | + "import_cancel_import_button" | + "integrate-api-key-selector-create-new-item" | + "integrate-api-key-selector-item" | + "integrate-api-key-selector-select" | + "integrate-api-key-selector-select-input" | + "integrate-choose-your-weapon-step-content" | + "integrate-choose-your-weapon-step-label" | + "integrate-go-to-docs-button" | + "integrate-guide" | + "integrate-select-api-key-step-content" | + "integrate-select-api-key-step-label" | + "integrate-weapon-selector-button" | + "invitation-dialog-close-button" | + "invitation-dialog-input-field" | + "invitation-dialog-invite-button" | + "invitation-dialog-role-button" | + "invitation-dialog-type-email-button" | + "invitation-dialog-type-link-button" | + "invite-generate-button" | + "key-edit-tab-advanced" | + "key-edit-tab-context" | + "key-edit-tab-custom-properties" | + "key-edit-tab-general" | + "key-plural-checkbox" | + "key-plural-checkbox-expand" | + "key-plural-variable-name" | + "language-ai-prompt-dialog-description-input" | + "language-ai-prompt-dialog-save" | + "language-delete-button" | + "language-modify-form" | + "languages-add-dialog-submit" | + "languages-create-autocomplete-field" | + "languages-create-autocomplete-suggested-option" | + "languages-create-cancel-prepared-button" | + "languages-create-customize-button" | + "languages-flag-selector-open-button" | + "languages-menu-ai-prompt-customization" | + "languages-menu-machine-translation" | + "languages-menu-project-languages" | + "languages-modify-apply-button" | + "languages-modify-cancel-button" | + "languages-prepared-language-box" | + "login-button" | + "machine-translations-settings-language-enabled-service" | + "machine-translations-settings-language-options" | + "machine-translations-settings-language-primary-service" | + "mfa-disable-button" | + "mfa-disable-dialog" | + "mfa-disable-dialog-content" | + "mfa-disable-dialog-password-input" | + "mfa-disable-dialog-title" | + "mfa-enable-button" | + "mfa-enable-dialog" | + "mfa-enable-dialog-content" | + "mfa-enable-dialog-otp-input" | + "mfa-enable-dialog-password-input" | + "mfa-enable-dialog-title" | + "mfa-enable-dialog-totp-key" | + "mfa-recovery-button" | + "mfa-recovery-codes-dialog" | + "mfa-recovery-codes-dialog-close" | + "mfa-recovery-codes-dialog-content" | + "mfa-recovery-codes-dialog-password-input" | + "mfa-recovery-codes-dialog-title" | + "mt-language-dialog-auto-for-import" | + "mt-language-dialog-auto-machine-translation" | + "mt-language-dialog-auto-translation-memory" | + "mt-language-dialog-enabled-checkbox" | + "mt-language-dialog-formality-select" | + "mt-language-dialog-formality-select-item" | + "mt-language-dialog-primary-radio" | + "mt-language-dialog-save" | + "mt-language-dialog-service-label" | + "namespace-value" | + "namespaces-banner-content" | + "namespaces-banner-menu" | + "namespaces-banner-menu-button" | + "namespaces-banner-menu-option" | + "namespaces-rename-cancel" | + "namespaces-rename-confirm" | + "namespaces-rename-text-field" | + "namespaces-select-cancel" | + "namespaces-select-confirm" | + "namespaces-select-text-field" | + "namespaces-selector" | + "navigation-item" | + "organization-address-part-field" | + "organization-description-field" | + "organization-invitation-cancel-button" | + "organization-invitation-copy-button" | + "organization-invitation-item" | + "organization-member-item" | + "organization-member-leave-button" | + "organization-members-remove-user-button" | + "organization-name-field" | + "organization-profile" | + "organization-profile-delete-button" | + "organization-profile-leave-button" | + "organization-role-menu" | + "organization-role-menu-button" | + "organization-role-select-item" | + "organization-side-menu" | + "organization-switch" | + "organization-switch-item" | + "organization-switch-new" | + "organization-switch-search" | + "pat-expiry-info" | + "pat-list-item" | + "pat-list-item-alert" | + "pat-list-item-delete-button" | + "pat-list-item-description" | + "pat-list-item-last-used" | + "pat-list-item-new-token-input" | + "pat-list-item-regenerate-button" | + "permissions-advanced-checkbox" | + "permissions-advanced-item" | + "permissions-language-menu-button" | + "permissions-menu" | + "permissions-menu-basic" | + "permissions-menu-button" | + "permissions-menu-close" | + "permissions-menu-granular" | + "permissions-menu-inherited-message" | + "permissions-menu-reset-to-organization" | + "permissions-menu-save" | + "project-ai-prompt-dialog-description-input" | + "project-ai-prompt-dialog-save" | + "project-dashboard-activity-chart" | + "project-dashboard-activity-list" | + "project-dashboard-base-word-count" | + "project-dashboard-description" | + "project-dashboard-key-count" | + "project-dashboard-language-bar" | + "project-dashboard-language-count" | + "project-dashboard-language-label-keys" | + "project-dashboard-language-label-percentage" | + "project-dashboard-language-label-state" | + "project-dashboard-language-label-words" | + "project-dashboard-language-menu" | + "project-dashboard-language-menu-export" | + "project-dashboard-language-menu-settings" | + "project-dashboard-members" | + "project-dashboard-members-count" | + "project-dashboard-progress" | + "project-dashboard-project-totals" | + "project-dashboard-reviewed-percentage" | + "project-dashboard-strings" | + "project-dashboard-strings-count" | + "project-dashboard-tags" | + "project-dashboard-text" | + "project-dashboard-translated-percentage" | + "project-delete-button" | + "project-leave-button" | + "project-list-languages" | + "project-list-languages-item" | + "project-list-more-button" | + "project-list-translations-button" | + "project-member-item" | + "project-member-revoke-button" | + "project-menu-item" | + "project-menu-item-dashboard" | + "project-menu-item-developer" | + "project-menu-item-export" | + "project-menu-item-import" | + "project-menu-item-integrate" | + "project-menu-item-languages" | + "project-menu-item-members" | + "project-menu-item-projects" | + "project-menu-item-settings" | + "project-menu-item-translations" | + "project-menu-items" | + "project-mt-dialog-settings-inherited" | + "project-name-field" | + "project-settings" | + "project-settings-button" | + "project-settings-delete-button" | + "project-settings-description" | + "project-settings-languages" | + "project-settings-languages-add" | + "project-settings-languages-list-edit-button" | + "project-settings-languages-list-name" | + "project-settings-menu-advanced" | + "project-settings-menu-general" | + "project-settings-name" | + "project-settings-transfer-button" | + "project-settings-use-tolgee-placeholders-checkbox" | + "project-states-bar-bar" | + "project-states-bar-dot" | + "project-states-bar-legend" | + "project-states-bar-root" | + "project-states-bar-state-progress" | + "project-transfer-autocomplete-field" | + "project-transfer-autocomplete-suggested-option" | + "project-transfer-confirmation-field" | + "project-transfer-dialog" | + "quick-start-action" | + "quick-start-dialog" | + "quick-start-finish-action" | + "quick-start-finish-step" | + "quick-start-highlight" | + "quick-start-highlight-ok" | + "quick-start-step" | + "regenerate-pat-dialog-content" | + "regenerate-pat-dialog-title" | + "resend-email-button" | + "screenshot-image" | + "screenshot-thumbnail" | + "screenshot-thumbnail-delete" | + "search-select" | + "search-select-item" | + "search-select-new" | + "search-select-search" | + "self-hosted-ee-active-plan" | + "sensitive-dialog-otp-input" | + "sensitive-dialog-password-input" | + "sensitive-protection-dialog" | + "settings-menu-item" | + "sign-up-submit-button" | + "spending-limit-exceeded-popover" | + "storage-add-item-button" | + "storage-form-azure-connection-string" | + "storage-form-azure-container-name" | + "storage-form-delete" | + "storage-form-name" | + "storage-form-public-url-prefix" | + "storage-form-s3-access-key" | + "storage-form-s3-bucket-name" | + "storage-form-s3-endpoint" | + "storage-form-s3-secret-key" | + "storage-form-s3-signing-region" | + "storage-form-save" | + "storage-form-test" | + "storage-form-type-azure" | + "storage-form-type-s3" | + "storage-item-edit" | + "storage-list-item" | + "storage-subtitle" | + "tag-autocomplete-input" | + "tag-autocomplete-option" | + "this-is-the-element" | + "top-banner" | + "top-banner-content" | + "top-banner-dismiss-button" | + "transfer-project-apply-button" | + "translation-create-description-input" | + "translation-create-key-input" | + "translation-create-namespace-input" | + "translation-create-translation-input" | + "translation-edit-delete-button" | + "translation-edit-key-field" | + "translation-edit-translation-field" | + "translation-editor" | + "translation-field-label" | + "translation-history-item" | + "translation-panel" | + "translation-panel-content" | + "translation-panel-toggle" | + "translation-plural-parameter" | + "translation-plural-variant" | + "translation-state-button" | + "translation-text" | + "translation-tools-machine-translation-item" | + "translation-tools-translation-memory-item" | + "translations-add-button" | + "translations-auto-translated-clear-button" | + "translations-auto-translated-indicator" | + "translations-cell-cancel-button" | + "translations-cell-comments-button" | + "translations-cell-edit-button" | + "translations-cell-insert-base-button" | + "translations-cell-save-button" | + "translations-cell-screenshots-button" | + "translations-cell-switch-mode" | + "translations-comments-input" | + "translations-comments-load-more-button" | + "translations-filter-clear-all" | + "translations-filter-option" | + "translations-filter-select" | + "translations-filters-subheader" | + "translations-history-load-more-button" | + "translations-key-cell-description" | + "translations-key-count" | + "translations-key-edit-description-field" | + "translations-key-edit-key-field" | + "translations-language-select-form-control" | + "translations-language-select-item" | + "translations-namespace-banner" | + "translations-outdated-clear-button" | + "translations-outdated-indicator" | + "translations-row" | + "translations-row-checkbox" | + "translations-select-all-button" | + "translations-shortcuts-command" | + "translations-state-indicator" | + "translations-table-cell" | + "translations-table-cell-language" | + "translations-table-cell-translation" | + "translations-tag" | + "translations-tag-add" | + "translations-tag-close" | + "translations-tag-input" | + "translations-tags-add" | + "translations-toolbar-counter" | + "translations-toolbar-to-top" | + "translations-view-list" | + "translations-view-list-button" | + "translations-view-table" | + "translations-view-table-button" | + "user-delete-organization-message-item" | + "user-menu-language-switch" | + "user-menu-logout" | + "user-menu-organization-settings" | + "user-menu-organization-switch" | + "user-menu-server-administration" | + "user-menu-theme-switch" | + "user-menu-user-settings" | + "user-profile" | + "webhook-form-cancel" | + "webhook-form-delete" | + "webhook-form-save" | + "webhook-form-url" | + "webhooks-add-item-button" | + "webhooks-item-edit" | + "webhooks-item-show-secret" | + "webhooks-item-test" | + "webhooks-list-item" | + "webhooks-subtitle" +} From d859661d54cd7db01c0fb03cdde3924b3b25102f Mon Sep 17 00:00:00 2001 From: Jan Cizmar Date: Mon, 9 Sep 2024 11:37:49 +0200 Subject: [PATCH 07/19] fix: build --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 78e709019f..021ee85253 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -122,7 +122,7 @@ jobs: with: timeout_minutes: 30 max_attempts: ${{ github.event_name == 'push' && 5 || 1 }} - command: ./gradlew ${{ matrix.command }} -x classes -x compileKotlin -x compileJava + command: ./gradlew ${{ matrix.command }} env: SKIP_SERVER_BUILD: true CI_RELEASE: ${{ github.event_name == 'push' && true || false }} From a94c2153004aa29a11deb56b88a88c60549c8b1b Mon Sep 17 00:00:00 2001 From: Jan Cizmar Date: Mon, 9 Sep 2024 12:40:09 +0200 Subject: [PATCH 08/19] fix: dependencies --- build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle b/build.gradle index 55e94f302b..d7352f3f92 100644 --- a/build.gradle +++ b/build.gradle @@ -158,6 +158,7 @@ subprojects { task allDeps(type: DependencyReportTask) {} ext['hibernate.version'] = hibernateVersion ext['commons-lang3.version'] = commonsLang3Version + ext['jackson.version'] = jacksonVersion tasks.withType(Test) { testLogging { From e04b1a5a247ef589f1f70507178c9e15680bfd8b Mon Sep 17 00:00:00 2001 From: Jan Cizmar Date: Mon, 9 Sep 2024 12:40:48 +0200 Subject: [PATCH 09/19] fix: Use java 21 --- backend/api/build.gradle | 2 +- backend/app/build.gradle | 2 +- backend/data/build.gradle | 2 +- backend/development/build.gradle | 2 +- backend/misc/build.gradle | 2 +- backend/security/build.gradle | 2 +- backend/testing/build.gradle | 2 +- ee/backend/app/build.gradle | 2 +- ee/backend/tests/build.gradle | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/backend/api/build.gradle b/backend/api/build.gradle index 045bb0ef83..4929b521b1 100644 --- a/backend/api/build.gradle +++ b/backend/api/build.gradle @@ -30,7 +30,7 @@ repositories { } kotlin { - jvmToolchain(17) + jvmToolchain(21) } allOpen { diff --git a/backend/app/build.gradle b/backend/app/build.gradle index 0333036bea..2be278e5fb 100644 --- a/backend/app/build.gradle +++ b/backend/app/build.gradle @@ -65,7 +65,7 @@ allOpen { } kotlin { - jvmToolchain(17) + jvmToolchain(21) } dependencies { diff --git a/backend/data/build.gradle b/backend/data/build.gradle index cefa16098c..9acbebf68b 100644 --- a/backend/data/build.gradle +++ b/backend/data/build.gradle @@ -79,7 +79,7 @@ diff.dependsOn compileKotlin diffChangelog.dependsOn compileKotlin kotlin { - jvmToolchain(17) + jvmToolchain(21) } dependencies { diff --git a/backend/development/build.gradle b/backend/development/build.gradle index 9450866b8a..77ec850c96 100644 --- a/backend/development/build.gradle +++ b/backend/development/build.gradle @@ -40,7 +40,7 @@ repositories { } kotlin { - jvmToolchain(17) + jvmToolchain(21) } idea { diff --git a/backend/misc/build.gradle b/backend/misc/build.gradle index 7b23fb5b74..8fc0f1113e 100644 --- a/backend/misc/build.gradle +++ b/backend/misc/build.gradle @@ -23,7 +23,7 @@ repositories { } kotlin { - jvmToolchain(17) + jvmToolchain(21) } dependencies { diff --git a/backend/security/build.gradle b/backend/security/build.gradle index 1fbb51f19b..1bca20b14b 100644 --- a/backend/security/build.gradle +++ b/backend/security/build.gradle @@ -26,7 +26,7 @@ repositories { } kotlin { - jvmToolchain(17) + jvmToolchain(21) } allOpen { diff --git a/backend/testing/build.gradle b/backend/testing/build.gradle index c2f808c669..51693a85f3 100644 --- a/backend/testing/build.gradle +++ b/backend/testing/build.gradle @@ -47,7 +47,7 @@ repositories { } kotlin { - jvmToolchain(17) + jvmToolchain(21) } idea { diff --git a/ee/backend/app/build.gradle b/ee/backend/app/build.gradle index 35396d39b3..5a9053e384 100644 --- a/ee/backend/app/build.gradle +++ b/ee/backend/app/build.gradle @@ -92,7 +92,7 @@ dependencies { } kotlin { - jvmToolchain(17) + jvmToolchain(21) } dependencyManagement { diff --git a/ee/backend/tests/build.gradle b/ee/backend/tests/build.gradle index 030334261a..01e15401d1 100644 --- a/ee/backend/tests/build.gradle +++ b/ee/backend/tests/build.gradle @@ -57,7 +57,7 @@ dependencies { } kotlin { - jvmToolchain(17) + jvmToolchain(21) } dependencyManagement { From 49d30eb51391a1a2b98ae26b376c49a1f1b731de Mon Sep 17 00:00:00 2001 From: Jan Cizmar Date: Mon, 9 Sep 2024 12:44:00 +0200 Subject: [PATCH 10/19] fix: Update Sentry Gradle --- settings.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings.gradle b/settings.gradle index 345e8ee887..97d3aeabdc 100644 --- a/settings.gradle +++ b/settings.gradle @@ -24,7 +24,7 @@ pluginManagement { useVersion(hibernateVersion) } if (requested.id.id == 'io.sentry.jvm.gradle') { - useVersion('4.0.0') + useVersion('4.11.0') } if(requested.id.id == 'org.gradle.test-retry') { useVersion('1.5.8') From 95687e47342a7778bee97c2220cbfd789574af63 Mon Sep 17 00:00:00 2001 From: Jan Cizmar Date: Mon, 9 Sep 2024 13:04:31 +0200 Subject: [PATCH 11/19] fix: Fix jackson version --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 374d3ed257..88065c1e52 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,7 +7,7 @@ amazonAwsSdkVersion=2.20.8 springDependencyManagementVersion=1.0.11.RELEASE org.gradle.jvmargs=-Xmx6g -Dkotlin.daemon.jvm.options=-Xmx6g org.gradle.parallel=true -jacksonVersion=2.13.5 +jacksonVersion=2.17.2 slackSdkVersion=1.37.0 commonsLang3Version=3.14.0 org.gradle.caching=true From bd8391daa6d98f58bfae16ac0d734a0f4b49a284 Mon Sep 17 00:00:00 2001 From: Jan Cizmar Date: Mon, 9 Sep 2024 13:58:59 +0200 Subject: [PATCH 12/19] fix: Update Docker base image --- docker/app/Dockerfile | 2 +- docker/base/Dockerfile | 4 ++-- docker/base/README.md | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docker/app/Dockerfile b/docker/app/Dockerfile index d32b53679b..405842e253 100644 --- a/docker/app/Dockerfile +++ b/docker/app/Dockerfile @@ -1,4 +1,4 @@ -FROM tolgee/base:jdk-17-postgres-13 +FROM tolgee/base:jdk-21-postgres-13 ############# ### Tolgee # diff --git a/docker/base/Dockerfile b/docker/base/Dockerfile index 061930c1ae..30c3a31b7b 100644 --- a/docker/base/Dockerfile +++ b/docker/base/Dockerfile @@ -1,4 +1,4 @@ -FROM alpine:3.18 +FROM alpine:3.20 ######################################################################################## ### Postgres from postgres official Dockerfile # @@ -175,7 +175,7 @@ VOLUME /var/lib/postgresql/data COPY postgres-entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/postgres-entrypoint.sh -RUN apk --no-cache add openjdk17 +RUN apk --no-cache add openjdk21 # We set the default STOPSIGNAL to SIGINT, which corresponds to what PostgreSQL # calls "Fast Shutdown mode" wherein new connections are disallowed and any diff --git a/docker/base/README.md b/docker/base/README.md index 03f857e8d9..dbb2dbafa4 100644 --- a/docker/base/README.md +++ b/docker/base/README.md @@ -4,7 +4,7 @@ This Docker image contains JDK and Postgres to run Tolgee. ## It is published manually to DockerHub To build it and publish run: - docker buildx build . -t tolgee/base:jdk-17-postgres-13 --platform linux/arm64,linux/amd64 --push + docker buildx build . -t tolgee/base:jdk-21-postgres-13 --platform linux/arm64,linux/amd64 --push ## Troubleshooting From b428c9d3f454cc570af44f44b2add558b6ca7464 Mon Sep 17 00:00:00 2001 From: Jan Cizmar Date: Mon, 9 Sep 2024 14:44:59 +0200 Subject: [PATCH 13/19] fix: Update azure blob version --- settings.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings.gradle b/settings.gradle index 97d3aeabdc..a1faf58207 100644 --- a/settings.gradle +++ b/settings.gradle @@ -69,7 +69,7 @@ dependencyResolutionManagement { library('postHog', 'com.posthog.java:posthog:1.1.1') library('micrometerPrometheus', "io.micrometer:micrometer-registry-prometheus:1.13.3") library('mailjet', "com.mailjet:mailjet-client:5.2.5") - library('azureBlob', 'com.azure.spring:spring-cloud-azure-starter-storage-blob:5.11.0') + library('azureBlob', 'com.azure.spring:spring-cloud-azure-starter-storage-blob:5.15.0') library('slackApiClient', "com.slack.api:slack-api-client:$slackSdkVersion") library('slackApiModelKotlinExtension', "com.slack.api:slack-api-model-kotlin-extension:$slackSdkVersion") library('slackApiClientKotlinExtension', "com.slack.api:slack-api-client-kotlin-extension:$slackSdkVersion") From ec5f17ccc6c314e91457cdbf027466fd12b27b44 Mon Sep 17 00:00:00 2001 From: Jan Cizmar Date: Mon, 9 Sep 2024 14:56:24 +0200 Subject: [PATCH 14/19] fix: Disable the tasks to skip --- build.gradle | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/build.gradle b/build.gradle index d7352f3f92..1c96e0d263 100644 --- a/build.gradle +++ b/build.gradle @@ -139,18 +139,18 @@ ktlint { rootProject.subprojects { afterEvaluate { - tasks.findByName("compileKotlin")?.onlyIf { System.getenv("SKIP_SERVER_BUILD") != "true" } - tasks.findByName("kaptGenerateStubsTestKotlin")?.onlyIf { System.getenv("SKIP_SERVER_BUILD") != "true" } - tasks.findByName("kaptGenerateStubsKotlin")?.onlyIf { System.getenv("SKIP_SERVER_BUILD") != "true" } - tasks.findByName("kaptKotlin")?.onlyIf { System.getenv("SKIP_SERVER_BUILD") != "true" } - tasks.findByName("bootBuildInfo")?.onlyIf { System.getenv("SKIP_SERVER_BUILD") != "true" } - tasks.findByName("compileJava")?.onlyIf { System.getenv("SKIP_SERVER_BUILD") != "true" } - tasks.findByName("bootJarMainClassName")?.onlyIf { System.getenv("SKIP_SERVER_BUILD") != "true" } - tasks.findByName("jar")?.onlyIf { System.getenv("SKIP_SERVER_BUILD") != "true" } - tasks.findByName("bootJar")?.onlyIf { System.getenv("SKIP_SERVER_BUILD") != "true" } - tasks.findByName("classes")?.onlyIf { System.getenv("SKIP_SERVER_BUILD") != "true" } - tasks.findByName("classes")?.onlyIf { System.getenv("SKIP_SERVER_BUILD") != "true" } - tasks.findByName("compileTestKotlin")?.onlyIf { System.getenv("SKIP_SERVER_BUILD") != "true" } + def skipServerBuild = System.getenv("SKIP_SERVER_BUILD") == "true" + tasks.findByName("compileKotlin")?.enabled = !skipServerBuild + tasks.findByName("kaptGenerateStubsTestKotlin")?.enabled = !skipServerBuild + tasks.findByName("kaptGenerateStubsKotlin")?.enabled = !skipServerBuild + tasks.findByName("kaptKotlin")?.enabled = !skipServerBuild + tasks.findByName("bootBuildInfo")?.enabled = !skipServerBuild + tasks.findByName("compileJava")?.enabled = !skipServerBuild + tasks.findByName("bootJarMainClassName")?.enabled = !skipServerBuild + tasks.findByName("jar")?.enabled = !skipServerBuild + tasks.findByName("bootJar")?.enabled = !skipServerBuild + tasks.findByName("classes")?.enabled = !skipServerBuild + tasks.findByName("compileTestKotlin")?.enabled = !skipServerBuild } } From 842e044ebfd82879ceb22404cb9679fadf9c6ce4 Mon Sep 17 00:00:00 2001 From: Jan Cizmar Date: Mon, 9 Sep 2024 15:28:18 +0200 Subject: [PATCH 15/19] fix: Fix startup message --- build.gradle | 23 ++++++++++++----------- gradle/e2e.gradle | 2 +- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/build.gradle b/build.gradle index 1c96e0d263..d05330dde3 100644 --- a/build.gradle +++ b/build.gradle @@ -140,17 +140,18 @@ ktlint { rootProject.subprojects { afterEvaluate { def skipServerBuild = System.getenv("SKIP_SERVER_BUILD") == "true" - tasks.findByName("compileKotlin")?.enabled = !skipServerBuild - tasks.findByName("kaptGenerateStubsTestKotlin")?.enabled = !skipServerBuild - tasks.findByName("kaptGenerateStubsKotlin")?.enabled = !skipServerBuild - tasks.findByName("kaptKotlin")?.enabled = !skipServerBuild - tasks.findByName("bootBuildInfo")?.enabled = !skipServerBuild - tasks.findByName("compileJava")?.enabled = !skipServerBuild - tasks.findByName("bootJarMainClassName")?.enabled = !skipServerBuild - tasks.findByName("jar")?.enabled = !skipServerBuild - tasks.findByName("bootJar")?.enabled = !skipServerBuild - tasks.findByName("classes")?.enabled = !skipServerBuild - tasks.findByName("compileTestKotlin")?.enabled = !skipServerBuild + tasks.findByName("compileKotlin")?.onlyIf { !skipServerBuild } + tasks.findByName("kaptGenerateStubsTestKotlin")?.onlyIf { !skipServerBuild } + tasks.findByName("kaptGenerateStubsKotlin")?.onlyIf { !skipServerBuild } + tasks.findByName("kaptKotlin")?.onlyIf { !skipServerBuild } + tasks.findByName("bootBuildInfo")?.onlyIf { !skipServerBuild } + tasks.findByName("compileJava")?.onlyIf { !skipServerBuild } + tasks.findByName("bootJarMainClassName")?.onlyIf { !skipServerBuild } + tasks.findByName("jar")?.onlyIf { !skipServerBuild } + tasks.findByName("bootJar")?.onlyIf { !skipServerBuild } + tasks.findByName("classes")?.onlyIf { !skipServerBuild } + tasks.findByName("classes")?.onlyIf { !skipServerBuild } + tasks.findByName("compileTestKotlin")?.onlyIf { !skipServerBuild } } } diff --git a/gradle/e2e.gradle b/gradle/e2e.gradle index b0be8526a4..12e934ee86 100644 --- a/gradle/e2e.gradle +++ b/gradle/e2e.gradle @@ -60,7 +60,7 @@ task waitForRunningContainer(type: Task, group: "e2e") { String s = null while ((s = stdInput.readLine()) != null) { println(s) - if (s.contains("Tomcat started on port(s):")) { + if (s.contains("Tomcat started on port 8084 (http)")) { return } } From 15cfaca484e1c369be5c4f7e14a99a6a9adf3109 Mon Sep 17 00:00:00 2001 From: Jan Cizmar Date: Mon, 9 Sep 2024 15:37:05 +0200 Subject: [PATCH 16/19] fix: Fix startup message --- gradle/e2e.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/e2e.gradle b/gradle/e2e.gradle index 12e934ee86..dd9c0e4054 100644 --- a/gradle/e2e.gradle +++ b/gradle/e2e.gradle @@ -60,7 +60,7 @@ task waitForRunningContainer(type: Task, group: "e2e") { String s = null while ((s = stdInput.readLine()) != null) { println(s) - if (s.contains("Tomcat started on port 8084 (http)")) { + if (s.contains("Tomcat started on port")) { return } } From 851173d4175a5b4bccbf0d147cb44c989c55eddd Mon Sep 17 00:00:00 2001 From: Jan Cizmar Date: Mon, 9 Sep 2024 16:54:07 +0200 Subject: [PATCH 17/19] fix: Really skip the compilation tasks --- backend/app/build.gradle | 6 +++--- build.gradle | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/backend/app/build.gradle b/backend/app/build.gradle index 2be278e5fb..1effcd8e1b 100644 --- a/backend/app/build.gradle +++ b/backend/app/build.gradle @@ -205,7 +205,7 @@ test { setTestRetry(it) } -task runContextRecreatingTests(type: Test, group: 'verification') { +tasks.register('runContextRecreatingTests', Test) { useJUnitPlatform { includeTags "contextRecreating" } @@ -213,7 +213,7 @@ task runContextRecreatingTests(type: Test, group: 'verification') { setTestRetry(it) } -task runStandardTests(type: Test, group: 'verification') { +tasks.register('runStandardTests', Test) { useJUnitPlatform { excludeTags "contextRecreating", "websocket" } @@ -221,7 +221,7 @@ task runStandardTests(type: Test, group: 'verification') { setTestRetry(it) } -task runWebsocketTests(type: Test, group: 'verification') { +tasks.register('runWebsocketTests', Test) { useJUnitPlatform { includeTags "websocket" } diff --git a/build.gradle b/build.gradle index d05330dde3..9482b6c879 100644 --- a/build.gradle +++ b/build.gradle @@ -138,19 +138,19 @@ ktlint { } rootProject.subprojects { - afterEvaluate { + gradle.taskGraph.whenReady { def skipServerBuild = System.getenv("SKIP_SERVER_BUILD") == "true" tasks.findByName("compileKotlin")?.onlyIf { !skipServerBuild } tasks.findByName("kaptGenerateStubsTestKotlin")?.onlyIf { !skipServerBuild } tasks.findByName("kaptGenerateStubsKotlin")?.onlyIf { !skipServerBuild } tasks.findByName("kaptKotlin")?.onlyIf { !skipServerBuild } + tasks.findByName("kaptTestKotlin")?.onlyIf { !skipServerBuild } tasks.findByName("bootBuildInfo")?.onlyIf { !skipServerBuild } - tasks.findByName("compileJava")?.onlyIf { !skipServerBuild } + tasks.findByName("compileJava")?.onlyIf {!skipServerBuild} tasks.findByName("bootJarMainClassName")?.onlyIf { !skipServerBuild } tasks.findByName("jar")?.onlyIf { !skipServerBuild } tasks.findByName("bootJar")?.onlyIf { !skipServerBuild } tasks.findByName("classes")?.onlyIf { !skipServerBuild } - tasks.findByName("classes")?.onlyIf { !skipServerBuild } tasks.findByName("compileTestKotlin")?.onlyIf { !skipServerBuild } } } From 8315e840ba3b94d06b99e8029b3de669a2a63f14 Mon Sep 17 00:00:00 2001 From: Jan Cizmar Date: Mon, 9 Sep 2024 17:04:29 +0200 Subject: [PATCH 18/19] fix: Really skip all --- build.gradle | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build.gradle b/build.gradle index 9482b6c879..45b859a0a2 100644 --- a/build.gradle +++ b/build.gradle @@ -152,6 +152,9 @@ rootProject.subprojects { tasks.findByName("bootJar")?.onlyIf { !skipServerBuild } tasks.findByName("classes")?.onlyIf { !skipServerBuild } tasks.findByName("compileTestKotlin")?.onlyIf { !skipServerBuild } + tasks.findByName("processTestResources")?.onlyIf { !skipServerBuild } + tasks.findByName("processResources")?.onlyIf { !skipServerBuild } + tasks.findByName("testClasses")?.onlyIf { !skipServerBuild } } } From b4f2b21ab13d79450d539cc577851edc991991e1 Mon Sep 17 00:00:00 2001 From: Jan Cizmar Date: Mon, 9 Sep 2024 19:29:27 +0200 Subject: [PATCH 19/19] fix: Ok, don't skip it all --- build.gradle | 3 --- 1 file changed, 3 deletions(-) diff --git a/build.gradle b/build.gradle index 45b859a0a2..9482b6c879 100644 --- a/build.gradle +++ b/build.gradle @@ -152,9 +152,6 @@ rootProject.subprojects { tasks.findByName("bootJar")?.onlyIf { !skipServerBuild } tasks.findByName("classes")?.onlyIf { !skipServerBuild } tasks.findByName("compileTestKotlin")?.onlyIf { !skipServerBuild } - tasks.findByName("processTestResources")?.onlyIf { !skipServerBuild } - tasks.findByName("processResources")?.onlyIf { !skipServerBuild } - tasks.findByName("testClasses")?.onlyIf { !skipServerBuild } } }