From 25b200b3e96142e945b97a3ad79bc211290373f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20B=C3=A9gaudeau?= Date: Sat, 7 Oct 2023 18:39:00 +0200 Subject: [PATCH] [256] Switch to Java 21 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: https://github.com/svalyn/svalyn-studio/issues/256 Signed-off-by: Stéphane Bégaudeau --- .github/workflows/continuous_integration.yml | 10 +- backend/svalyn-studio-application/pom.xml | 4 +- .../services/account/AccountService.java | 26 ++-- .../account/AuthenticationTokenService.java | 30 ++--- .../history/ChangeProposalService.java | 13 +- .../notification/NotificationService.java | 13 +- .../organization/InvitationService.java | 59 +++------ .../organization/MembershipService.java | 13 +- .../organization/OrganizationService.java | 51 +++----- .../services/project/ProjectService.java | 65 +++------ .../application/services/tag/TagService.java | 26 ++-- backend/svalyn-studio-domain/pom.xml | 4 +- backend/svalyn-studio-infrastructure/pom.xml | 4 +- backend/svalyn-studio-message/pom.xml | 4 +- backend/svalyn-studio-parent/pom.xml | 123 ++++++++++++++---- backend/svalyn-studio-test-coverage/pom.xml | 4 +- backend/svalyn-studio/pom.xml | 4 +- 17 files changed, 210 insertions(+), 243 deletions(-) diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 53a5d98c..7a1d1965 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -14,20 +14,20 @@ jobs: if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4.0.0 - name: Setup Node SDK - uses: actions/setup-node@v3 + uses: actions/setup-node@v3.8.1 with: node-version: '18.x' cache: 'npm' cache-dependency-path: frontend/svalyn-studio-app/package-lock.json - name: Setup Java SDK - uses: actions/setup-java@v3 + uses: actions/setup-java@v3.13.0 with: - distribution: 'temurin' - java-version: 20 + distribution: 'zulu' + java-version: 21 cache: 'maven' - name: Build the frontend diff --git a/backend/svalyn-studio-application/pom.xml b/backend/svalyn-studio-application/pom.xml index f4f70542..91e0ad2b 100644 --- a/backend/svalyn-studio-application/pom.xml +++ b/backend/svalyn-studio-application/pom.xml @@ -35,8 +35,8 @@ 2023.10.0-SNAPSHOT - 20 - 20 + 21 + 21 UTF-8 diff --git a/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/account/AccountService.java b/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/account/AccountService.java index ed673636..7b53f41d 100644 --- a/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/account/AccountService.java +++ b/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/account/AccountService.java @@ -107,30 +107,20 @@ public Page findAll(int page, int rowsPerPage) { @Override @Transactional public IPayload createAccount(CreateAccountInput input) { - IPayload payload = null; - var result = this.accountCreationService.createAccount(input.name(), input.email(), input.username(), input.password()); - if (result instanceof Failure failure) { - payload = new ErrorPayload(input.id(), failure.message()); - } else if (result instanceof Success success) { - payload = new CreateAccountSuccessPayload(input.id(), this.toDTO(success.data())); - } - - return payload; + return switch (result) { + case Failure failure -> new ErrorPayload(input.id(), failure.message()); + case Success success -> new CreateAccountSuccessPayload(input.id(), this.toDTO(success.data())); + }; } @Override @Transactional public IPayload deleteAccount(DeleteAccountInput input) { - IPayload payload = null; - var result = this.accountDeletionService.deleteAccount(input.username()); - if (result instanceof Failure failure) { - payload = new ErrorPayload(input.id(), failure.message()); - } else if (result instanceof Success) { - payload = new SuccessPayload(input.id()); - } - - return payload; + return switch (result) { + case Failure failure -> new ErrorPayload(input.id(), failure.message()); + case Success success -> new SuccessPayload(input.id()); + }; } } diff --git a/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/account/AuthenticationTokenService.java b/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/account/AuthenticationTokenService.java index 643bb304..b76e25b9 100644 --- a/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/account/AuthenticationTokenService.java +++ b/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/account/AuthenticationTokenService.java @@ -89,31 +89,23 @@ private AuthenticationTokenDTO toDTO(AuthenticationToken authenticationToken) { @Override @Transactional public IPayload createAuthenticationToken(CreateAuthenticationTokenInput input) { - IPayload payload = null; - var result = this.accountUpdateService.createAuthenticationToken(input.name()); - if (result instanceof Failure failure) { - payload = new ErrorPayload(input.id(), failure.message()); - } else if (result instanceof Success success) { - var authenticationTokenCreatedDTO = new AuthenticationTokenCreatedDTO(success.data().name(), success.data().accessKey(), success.data().secretKey()); - payload = new CreateAuthenticationTokenSuccessPayload(input.id(), authenticationTokenCreatedDTO); - } - - return payload; + return switch (result) { + case Failure failure -> new ErrorPayload(input.id(), failure.message()); + case Success success -> { + var authenticationTokenCreatedDTO = new AuthenticationTokenCreatedDTO(success.data().name(), success.data().accessKey(), success.data().secretKey()); + yield new CreateAuthenticationTokenSuccessPayload(input.id(), authenticationTokenCreatedDTO); + } + }; } @Override @Transactional public IPayload updateAuthenticationTokensStatus(UpdateAuthenticationTokensStatusInput input) { - IPayload payload = null; - var result = this.accountUpdateService.updateAuthenticationTokensStatus(input.authenticationTokenIds(), input.status()); - if (result instanceof Failure failure) { - payload = new ErrorPayload(input.id(), failure.message()); - } else if (result instanceof Success success) { - payload = new SuccessPayload(input.id()); - } - - return payload; + return switch (result) { + case Failure failure -> new ErrorPayload(input.id(), failure.message()); + case Success success -> new SuccessPayload(input.id()); + }; } } diff --git a/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/history/ChangeProposalService.java b/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/history/ChangeProposalService.java index b5759ca3..60eb97c1 100644 --- a/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/history/ChangeProposalService.java +++ b/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/history/ChangeProposalService.java @@ -130,16 +130,11 @@ public Page findAllByProjectIdAndStatus(UUID projectId, List< @Override @Transactional public IPayload createChangeProposal(CreateChangeProposalInput input) { - IPayload payload = null; - var result = this.changeProposalCreationService.createChangeProposal(input.projectIdentifier(), input.name(), input.resourceIds()); - if (result instanceof Failure failure) { - payload = new ErrorPayload(input.id(), failure.message()); - } else if (result instanceof Success success) { - payload = new CreateChangeProposalSuccessPayload(input.id(), this.toDTO(success.data()).orElse(null)); - } - - return payload; + return switch (result) { + case Failure failure -> new ErrorPayload(input.id(), failure.message()); + case Success success -> new CreateChangeProposalSuccessPayload(input.id(), this.toDTO(success.data()).orElse(null)); + }; } private Optional toDTO(Review review) { diff --git a/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/notification/NotificationService.java b/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/notification/NotificationService.java index cd1e082a..9d5713fe 100644 --- a/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/notification/NotificationService.java +++ b/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/notification/NotificationService.java @@ -115,15 +115,10 @@ public Page findAllByStatus(List status, in @Override @Transactional public IPayload updateStatus(UpdateNotificationsStatusInput input) { - IPayload payload = null; - var result = this.notificationUpdateService.updateStatus(input.notificationIds(), input.status()); - if (result instanceof Failure failure) { - payload = new ErrorPayload(input.id(), failure.message()); - } else if (result instanceof Success) { - payload = new SuccessPayload(input.id()); - } - - return payload; + return switch (result) { + case Failure failure -> new ErrorPayload(input.id(), failure.message()); + case Success success -> new SuccessPayload(input.id()); + }; } } diff --git a/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/organization/InvitationService.java b/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/organization/InvitationService.java index 0bd78363..9034a910 100644 --- a/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/organization/InvitationService.java +++ b/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/organization/InvitationService.java @@ -128,65 +128,42 @@ public Page findAll(OrganizationDTO organization, int page, int r @Override @Transactional public IPayload inviteMember(InviteMemberInput input) { - IPayload payload = null; - - var optionalAccount = this.accountRepository.findByEmail(input.email()); - if (optionalAccount.isPresent()) { - var account = optionalAccount.get(); + return this.accountRepository.findByEmail(input.email()).map(account -> { var result = this.organizationUpdateService.inviteMember(input.organizationIdentifier(), account.getId()); - if (result instanceof Success success) { - payload = new SuccessPayload(input.id()); - } else if (result instanceof Failure failure) { - payload = new ErrorPayload(input.id(), failure.message()); - } - } else { - payload = new ErrorPayload(input.id(), this.messageService.doesNotExist("account")); - } - return payload; + return switch (result) { + case Failure failure -> new ErrorPayload(input.id(), failure.message()); + case Success success -> new SuccessPayload(input.id()); + }; + }).orElse(new ErrorPayload(input.id(), this.messageService.doesNotExist("account"))); } @Override @Transactional public IPayload revokeInvitation(RevokeInvitationInput input) { - IPayload payload = null; - var result = this.organizationUpdateService.revokeInvitation(input.organizationIdentifier(), input.invitationId()); - if (result instanceof Failure failure) { - payload = new ErrorPayload(input.id(), failure.message()); - } else if (result instanceof Success success) { - payload = new SuccessPayload(input.id()); - } - - return payload; + return switch (result) { + case Failure failure -> new ErrorPayload(input.id(), failure.message()); + case Success success -> new SuccessPayload(input.id()); + }; } @Override @Transactional public IPayload acceptInvitation(AcceptInvitationInput input) { - IPayload payload = null; - var result = this.organizationUpdateService.acceptInvitation(input.organizationIdentifier(), input.invitationId()); - if (result instanceof Failure failure) { - payload = new ErrorPayload(input.id(), failure.message()); - } else if (result instanceof Success success) { - payload = new SuccessPayload(input.id()); - } - - return payload; + return switch (result) { + case Failure failure -> new ErrorPayload(input.id(), failure.message()); + case Success success -> new SuccessPayload(input.id()); + }; } @Override @Transactional public IPayload declineInvitation(DeclineInvitationInput input) { - IPayload payload = null; - var result = this.organizationUpdateService.declineInvitation(input.organizationIdentifier(), input.invitationId()); - if (result instanceof Failure failure) { - payload = new ErrorPayload(input.id(), failure.message()); - } else if (result instanceof Success success) { - payload = new SuccessPayload(input.id()); - } - - return payload; + return switch (result) { + case Failure failure -> new ErrorPayload(input.id(), failure.message()); + case Success success -> new SuccessPayload(input.id()); + }; } } diff --git a/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/organization/MembershipService.java b/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/organization/MembershipService.java index 7648c61e..c2b083bc 100644 --- a/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/organization/MembershipService.java +++ b/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/organization/MembershipService.java @@ -105,15 +105,10 @@ public Page findAll(OrganizationDTO organization, int page, int r @Override @Transactional public IPayload revokeMemberships(RevokeMembershipsInput input) { - IPayload payload = null; - var result = this.organizationUpdateService.revokeMemberships(input.organizationIdentifier(), input.membershipIds()); - if (result instanceof Failure failure) { - payload = new ErrorPayload(input.id(), failure.message()); - } else if (result instanceof Success success) { - payload = new SuccessPayload(input.id()); - } - - return payload; + return switch (result) { + case Failure failure -> new ErrorPayload(input.id(), failure.message()); + case Success success -> new SuccessPayload(input.id()); + }; } } diff --git a/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/organization/OrganizationService.java b/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/organization/OrganizationService.java index 31491c4d..ba37770a 100644 --- a/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/organization/OrganizationService.java +++ b/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/organization/OrganizationService.java @@ -138,59 +138,40 @@ public List searchAllMatching(String query) { @Override @Transactional public IPayload createOrganization(CreateOrganizationInput input) { - IPayload payload = null; - var result = this.organizationCreationService.createOrganization(input.identifier(), input.name()); - if (result instanceof Failure failure) { - payload = new ErrorPayload(input.id(), failure.message()); - } else if (result instanceof Success success) { - payload = new CreateOrganizationSuccessPayload(input.id(), this.toDTO(success.data()).orElse(null)); - } - return payload; + return switch (result) { + case Failure failure -> new ErrorPayload(input.id(), failure.message()); + case Success success -> new CreateOrganizationSuccessPayload(input.id(), this.toDTO(success.data()).orElse(null)); + }; } @Override @Transactional public IPayload updateOrganizationName(UpdateOrganizationNameInput input) { - IPayload payload = null; - var result = this.organizationUpdateService.renameOrganization(input.organizationIdentifier(), input.name()); - if (result instanceof Failure failure) { - payload = new ErrorPayload(input.id(), failure.message()); - } else if (result instanceof Success) { - payload = new SuccessPayload(input.id()); - } - - return payload; + return switch (result) { + case Failure failure -> new ErrorPayload(input.id(), failure.message()); + case Success success -> new SuccessPayload(input.id()); + }; } @Override @Transactional public IPayload leaveOrganization(LeaveOrganizationInput input) { - IPayload payload = null; - var result = this.organizationUpdateService.leaveOrganization(input.organizationIdentifier()); - if (result instanceof Failure failure) { - payload = new ErrorPayload(input.id(), failure.message()); - } else if (result instanceof Success) { - payload = new SuccessPayload(input.id()); - } - - return payload; + return switch (result) { + case Failure failure -> new ErrorPayload(input.id(), failure.message()); + case Success success -> new SuccessPayload(input.id()); + }; } @Override @Transactional public IPayload deleteOrganization(DeleteOrganizationInput input) { - IPayload payload = null; - var result = this.organizationDeletionService.deleteOrganization(input.organizationIdentifier()); - if (result instanceof Failure failure) { - payload = new ErrorPayload(input.id(), failure.message()); - } else if (result instanceof Success) { - payload = new SuccessPayload(input.id()); - } - - return payload; + return switch (result) { + case Failure failure -> new ErrorPayload(input.id(), failure.message()); + case Success success -> new SuccessPayload(input.id()); + }; } } diff --git a/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/project/ProjectService.java b/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/project/ProjectService.java index 529ee3a1..b2466c76 100644 --- a/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/project/ProjectService.java +++ b/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/project/ProjectService.java @@ -137,75 +137,50 @@ public List searchAllMatching(String query) { @Override @Transactional public IPayload createProject(CreateProjectInput input) { - IPayload payload = null; - var result = this.projectCreationService.createProject(input.organizationIdentifier(), input.identifier(), input.name(), input.description()); - if (result instanceof Failure failure) { - payload = new ErrorPayload(input.id(), failure.message()); - } else if (result instanceof Success success) { - payload = new CreateProjectSuccessPayload(input.id(), this.toDTO(success.data()).orElse(null)); - } - - return payload; + return switch (result) { + case Failure failure -> new ErrorPayload(input.id(), failure.message()); + case Success success -> new CreateProjectSuccessPayload(input.id(), this.toDTO(success.data()).orElse(null)); + }; } @Override @Transactional public IPayload updateProjectName(UpdateProjectNameInput input) { - IPayload payload = null; - var result = this.projectUpdateService.updateName(input.projectIdentifier(), input.name()); - if (result instanceof Failure failure) { - payload = new ErrorPayload(input.id(), failure.message()); - } else if (result instanceof Success success) { - payload = new SuccessPayload(input.id()); - } - - return payload; + return switch (result) { + case Failure failure -> new ErrorPayload(input.id(), failure.message()); + case Success success -> new SuccessPayload(input.id()); + }; } @Override @Transactional public IPayload updateProjectDescription(UpdateProjectDescriptionInput input) { - IPayload payload = null; - var result = this.projectUpdateService.updateDescription(input.projectIdentifier(), input.description()); - if (result instanceof Failure failure) { - payload = new ErrorPayload(input.id(), failure.message()); - } else if (result instanceof Success success) { - payload = new SuccessPayload(input.id()); - } - - return payload; + return switch (result) { + case Failure failure -> new ErrorPayload(input.id(), failure.message()); + case Success success -> new SuccessPayload(input.id()); + }; } @Override @Transactional public IPayload updateProjectReadMe(UpdateProjectReadMeInput input) { - IPayload payload = null; - var result = this.projectUpdateService.updateReadMe(input.projectIdentifier(), input.content()); - if (result instanceof Failure failure) { - payload = new ErrorPayload(input.id(), failure.message()); - } else if (result instanceof Success success) { - payload = new SuccessPayload(input.id()); - } - - return payload; + return switch (result) { + case Failure failure -> new ErrorPayload(input.id(), failure.message()); + case Success success -> new SuccessPayload(input.id()); + }; } @Override @Transactional public IPayload deleteProject(DeleteProjectInput input) { - IPayload payload = null; - var result = this.projectDeletionService.deleteProject(input.projectIdentifier()); - if (result instanceof Failure failure) { - payload = new ErrorPayload(input.id(), failure.message()); - } else if (result instanceof Success) { - payload = new SuccessPayload(input.id()); - } - - return payload; + return switch (result) { + case Failure failure -> new ErrorPayload(input.id(), failure.message()); + case Success success -> new SuccessPayload(input.id()); + }; } } diff --git a/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/tag/TagService.java b/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/tag/TagService.java index 2022feee..4e01bafb 100644 --- a/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/tag/TagService.java +++ b/backend/svalyn-studio-application/src/main/java/com/svalyn/studio/application/services/tag/TagService.java @@ -70,16 +70,11 @@ public Page findAllByOrganizationId(UUID organizationId, int page, int r @Override @Transactional public IPayload addTagToOrganization(AddTagToOrganizationInput input) { - IPayload payload = null; - var result = this.tagCreationService.addOrganizationTag(input.organizationIdentifier(), input.key(), input.value()); - if (result instanceof Failure failure) { - payload = new ErrorPayload(input.id(), failure.message()); - } else if (result instanceof Success success) { - payload = new SuccessPayload(input.id()); - } - - return payload; + return switch (result) { + case Failure failure -> new ErrorPayload(input.id(), failure.message()); + case Success success -> new SuccessPayload(input.id()); + }; } @Override @@ -95,15 +90,10 @@ public Page findAllByProjectId(UUID projectId, int page, int rowsPerPage @Override @Transactional public IPayload addTagToProject(AddTagToProjectInput input) { - IPayload payload = null; - var result = this.tagCreationService.addProjectTag(input.projectIdentifier(), input.key(), input.value()); - if (result instanceof Failure failure) { - payload = new ErrorPayload(input.id(), failure.message()); - } else if (result instanceof Success success) { - payload = new SuccessPayload(input.id()); - } - - return payload; + return switch (result) { + case Failure failure -> new ErrorPayload(input.id(), failure.message()); + case Success success -> new SuccessPayload(input.id()); + }; } } diff --git a/backend/svalyn-studio-domain/pom.xml b/backend/svalyn-studio-domain/pom.xml index fdb13bfc..ad72b6f2 100644 --- a/backend/svalyn-studio-domain/pom.xml +++ b/backend/svalyn-studio-domain/pom.xml @@ -35,8 +35,8 @@ 2023.10.0-SNAPSHOT - 20 - 20 + 21 + 21 UTF-8 diff --git a/backend/svalyn-studio-infrastructure/pom.xml b/backend/svalyn-studio-infrastructure/pom.xml index e713a415..139d9dcb 100644 --- a/backend/svalyn-studio-infrastructure/pom.xml +++ b/backend/svalyn-studio-infrastructure/pom.xml @@ -35,8 +35,8 @@ 2023.10.0-SNAPSHOT - 20 - 20 + 21 + 21 UTF-8 diff --git a/backend/svalyn-studio-message/pom.xml b/backend/svalyn-studio-message/pom.xml index 46a963bc..bd27dd62 100644 --- a/backend/svalyn-studio-message/pom.xml +++ b/backend/svalyn-studio-message/pom.xml @@ -35,8 +35,8 @@ 2023.10.0-SNAPSHOT - 20 - 20 + 21 + 21 UTF-8 diff --git a/backend/svalyn-studio-parent/pom.xml b/backend/svalyn-studio-parent/pom.xml index 5338f104..c9e12c38 100644 --- a/backend/svalyn-studio-parent/pom.xml +++ b/backend/svalyn-studio-parent/pom.xml @@ -36,33 +36,14 @@ pom - 20 - 20 + 21 + 21 + 21 UTF-8 - - org.apache.maven.plugins - maven-toolchains-plugin - 3.1.0 - - - - toolchain - - - - - - - 20 - temurin - - - - org.apache.maven.plugins maven-checkstyle-plugin @@ -92,7 +73,7 @@ org.jacoco jacoco-maven-plugin - 0.8.9 + 0.8.10 @@ -110,4 +91,100 @@ + + + + temurin-toolchain + + false + + + + + org.apache.maven.plugins + maven-toolchains-plugin + 3.1.0 + + + validate + + toolchain + + + + + + + 21 + temurin + + + + + + + + + openjdk-toolchain + + false + + + + + org.apache.maven.plugins + maven-toolchains-plugin + 3.1.0 + + + validate + + toolchain + + + + + + + 21 + openjdk + + + + + + + + + zulu-toolchain + + false + + + + + org.apache.maven.plugins + maven-toolchains-plugin + 3.1.0 + + + validate + + toolchain + + + + + + + 21 + zulu + + + + + + + + \ No newline at end of file diff --git a/backend/svalyn-studio-test-coverage/pom.xml b/backend/svalyn-studio-test-coverage/pom.xml index f259f57f..4468cdae 100644 --- a/backend/svalyn-studio-test-coverage/pom.xml +++ b/backend/svalyn-studio-test-coverage/pom.xml @@ -28,8 +28,8 @@ 2023.10.0-SNAPSHOT - 20 - 20 + 21 + 21 UTF-8 diff --git a/backend/svalyn-studio/pom.xml b/backend/svalyn-studio/pom.xml index 6d0d1b0f..d232cdd3 100644 --- a/backend/svalyn-studio/pom.xml +++ b/backend/svalyn-studio/pom.xml @@ -35,8 +35,8 @@ 2023.10.0-SNAPSHOT - 20 - 20 + 21 + 21 UTF-8