From 22310779356e674daac52812a14e1dc4b4bdf685 Mon Sep 17 00:00:00 2001 From: Simon <9295182+grimsi@users.noreply.github.com> Date: Sun, 9 Apr 2023 01:41:54 +0200 Subject: [PATCH] Update backend to Spring Boot 3 (#111) * Update Spring Boot to 3.0.5 --- backend/pom.xml | 4 ++++ .../config/SecurityConfiguration.java | 14 +++++------- .../de/grimsi/gameyfin/entities/Company.java | 6 ++--- .../gameyfin/entities/DetectedGame.java | 2 +- .../de/grimsi/gameyfin/entities/Genre.java | 4 ++-- .../de/grimsi/gameyfin/entities/Keyword.java | 4 ++-- .../de/grimsi/gameyfin/entities/Library.java | 2 +- .../de/grimsi/gameyfin/entities/Platform.java | 6 ++--- .../gameyfin/entities/PlayerPerspective.java | 4 ++-- .../de/grimsi/gameyfin/entities/Theme.java | 4 ++-- .../gameyfin/entities/UnmappableFile.java | 6 +++-- .../de/grimsi/gameyfin/igdb/IgdbWrapper.java | 2 +- .../grimsi/gameyfin/service/ImageService.java | 2 +- .../UnmappableFileRepositoryTest.java | 1 - .../gameyfin/service/GameServiceTest.java | 8 +++---- frontend/package-lock.json | 22 +++++++++---------- frontend/package.json | 4 ++-- pom.xml | 2 +- 18 files changed, 49 insertions(+), 48 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index 4155038..a7d27bf 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -92,6 +92,10 @@ org.flywaydb flyway-core + + org.hibernate.validator + hibernate-validator + diff --git a/backend/src/main/java/de/grimsi/gameyfin/config/SecurityConfiguration.java b/backend/src/main/java/de/grimsi/gameyfin/config/SecurityConfiguration.java index 889989b..705dac6 100644 --- a/backend/src/main/java/de/grimsi/gameyfin/config/SecurityConfiguration.java +++ b/backend/src/main/java/de/grimsi/gameyfin/config/SecurityConfiguration.java @@ -3,26 +3,22 @@ package de.grimsi.gameyfin.config; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; -import org.springframework.http.HttpStatus; +import org.springframework.context.annotation.Configuration; import org.springframework.security.config.Customizer; -import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetails; -import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; -import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.provisioning.InMemoryUserDetailsManager; import org.springframework.security.web.SecurityFilterChain; -import org.springframework.security.web.authentication.HttpStatusEntryPoint; -import org.springframework.security.web.firewall.HttpFirewall; -import org.springframework.security.web.firewall.StrictHttpFirewall; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.CorsConfigurationSource; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +@Configuration @EnableWebSecurity -@EnableGlobalMethodSecurity(prePostEnabled = true) +@EnableMethodSecurity @RequiredArgsConstructor public class SecurityConfiguration { @@ -33,7 +29,7 @@ public class SecurityConfiguration { private String password; @Bean - protected SecurityFilterChain httpSecurity(HttpSecurity http) throws Exception { + public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http.csrf().disable(); http.headers().frameOptions().disable(); http.httpBasic(Customizer.withDefaults()); diff --git a/backend/src/main/java/de/grimsi/gameyfin/entities/Company.java b/backend/src/main/java/de/grimsi/gameyfin/entities/Company.java index 95a2e20..0369b39 100644 --- a/backend/src/main/java/de/grimsi/gameyfin/entities/Company.java +++ b/backend/src/main/java/de/grimsi/gameyfin/entities/Company.java @@ -3,9 +3,9 @@ package de.grimsi.gameyfin.entities; import lombok.*; import org.hibernate.Hibernate; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Id; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; import java.util.Objects; @Entity diff --git a/backend/src/main/java/de/grimsi/gameyfin/entities/DetectedGame.java b/backend/src/main/java/de/grimsi/gameyfin/entities/DetectedGame.java index cd82c26..da790b7 100644 --- a/backend/src/main/java/de/grimsi/gameyfin/entities/DetectedGame.java +++ b/backend/src/main/java/de/grimsi/gameyfin/entities/DetectedGame.java @@ -5,7 +5,7 @@ import lombok.*; import org.hibernate.Hibernate; import org.hibernate.annotations.CreationTimestamp; -import javax.persistence.*; +import jakarta.persistence.*; import java.time.Instant; import java.util.List; import java.util.Objects; diff --git a/backend/src/main/java/de/grimsi/gameyfin/entities/Genre.java b/backend/src/main/java/de/grimsi/gameyfin/entities/Genre.java index 9dc0119..021caa3 100644 --- a/backend/src/main/java/de/grimsi/gameyfin/entities/Genre.java +++ b/backend/src/main/java/de/grimsi/gameyfin/entities/Genre.java @@ -3,8 +3,8 @@ package de.grimsi.gameyfin.entities; import lombok.*; import org.hibernate.Hibernate; -import javax.persistence.Entity; -import javax.persistence.Id; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; import java.util.Objects; @Entity diff --git a/backend/src/main/java/de/grimsi/gameyfin/entities/Keyword.java b/backend/src/main/java/de/grimsi/gameyfin/entities/Keyword.java index 38067ad..87c96fe 100644 --- a/backend/src/main/java/de/grimsi/gameyfin/entities/Keyword.java +++ b/backend/src/main/java/de/grimsi/gameyfin/entities/Keyword.java @@ -3,8 +3,8 @@ package de.grimsi.gameyfin.entities; import lombok.*; import org.hibernate.Hibernate; -import javax.persistence.Entity; -import javax.persistence.Id; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; import java.util.Objects; @Entity diff --git a/backend/src/main/java/de/grimsi/gameyfin/entities/Library.java b/backend/src/main/java/de/grimsi/gameyfin/entities/Library.java index 7b94396..3db1fb5 100644 --- a/backend/src/main/java/de/grimsi/gameyfin/entities/Library.java +++ b/backend/src/main/java/de/grimsi/gameyfin/entities/Library.java @@ -3,7 +3,7 @@ package de.grimsi.gameyfin.entities; import lombok.*; import org.hibernate.Hibernate; -import javax.persistence.*; +import jakarta.persistence.*; import java.util.List; import java.util.Objects; diff --git a/backend/src/main/java/de/grimsi/gameyfin/entities/Platform.java b/backend/src/main/java/de/grimsi/gameyfin/entities/Platform.java index 0569716..d4decf6 100644 --- a/backend/src/main/java/de/grimsi/gameyfin/entities/Platform.java +++ b/backend/src/main/java/de/grimsi/gameyfin/entities/Platform.java @@ -3,9 +3,9 @@ package de.grimsi.gameyfin.entities; import lombok.*; import org.hibernate.Hibernate; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Id; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; import java.util.Objects; @Entity diff --git a/backend/src/main/java/de/grimsi/gameyfin/entities/PlayerPerspective.java b/backend/src/main/java/de/grimsi/gameyfin/entities/PlayerPerspective.java index 68b6161..692c2fd 100644 --- a/backend/src/main/java/de/grimsi/gameyfin/entities/PlayerPerspective.java +++ b/backend/src/main/java/de/grimsi/gameyfin/entities/PlayerPerspective.java @@ -3,8 +3,8 @@ package de.grimsi.gameyfin.entities; import lombok.*; import org.hibernate.Hibernate; -import javax.persistence.Entity; -import javax.persistence.Id; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; import java.util.Objects; @Entity diff --git a/backend/src/main/java/de/grimsi/gameyfin/entities/Theme.java b/backend/src/main/java/de/grimsi/gameyfin/entities/Theme.java index 32dd3cc..606933b 100644 --- a/backend/src/main/java/de/grimsi/gameyfin/entities/Theme.java +++ b/backend/src/main/java/de/grimsi/gameyfin/entities/Theme.java @@ -3,8 +3,8 @@ package de.grimsi.gameyfin.entities; import lombok.*; import org.hibernate.Hibernate; -import javax.persistence.Entity; -import javax.persistence.Id; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; import java.util.Objects; @Entity diff --git a/backend/src/main/java/de/grimsi/gameyfin/entities/UnmappableFile.java b/backend/src/main/java/de/grimsi/gameyfin/entities/UnmappableFile.java index d58e220..7157706 100644 --- a/backend/src/main/java/de/grimsi/gameyfin/entities/UnmappableFile.java +++ b/backend/src/main/java/de/grimsi/gameyfin/entities/UnmappableFile.java @@ -3,7 +3,8 @@ package de.grimsi.gameyfin.entities; import lombok.*; import org.hibernate.Hibernate; -import javax.persistence.*; +import jakarta.persistence.*; + import java.util.Objects; @Entity @@ -18,7 +19,8 @@ public class UnmappableFile { } @Id - @GeneratedValue(strategy = GenerationType.SEQUENCE) + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "HIBERNATE_SEQUENCE") + @SequenceGenerator(name = "HIBERNATE_SEQUENCE", allocationSize = 1) private Long id; private String path; diff --git a/backend/src/main/java/de/grimsi/gameyfin/igdb/IgdbWrapper.java b/backend/src/main/java/de/grimsi/gameyfin/igdb/IgdbWrapper.java index 85cfb7e..d52dca6 100644 --- a/backend/src/main/java/de/grimsi/gameyfin/igdb/IgdbWrapper.java +++ b/backend/src/main/java/de/grimsi/gameyfin/igdb/IgdbWrapper.java @@ -18,7 +18,7 @@ import org.springframework.stereotype.Service; import org.springframework.web.reactive.function.client.WebClient; import org.springframework.web.util.UriComponentsBuilder; -import javax.annotation.PostConstruct; +import jakarta.annotation.PostConstruct; import java.net.URI; import java.util.Collection; import java.util.Collections; diff --git a/backend/src/main/java/de/grimsi/gameyfin/service/ImageService.java b/backend/src/main/java/de/grimsi/gameyfin/service/ImageService.java index f92eaf2..367891f 100644 --- a/backend/src/main/java/de/grimsi/gameyfin/service/ImageService.java +++ b/backend/src/main/java/de/grimsi/gameyfin/service/ImageService.java @@ -15,7 +15,7 @@ import org.springframework.web.reactive.function.client.WebClient; import org.springframework.web.reactive.function.client.WebClientResponseException; import reactor.core.publisher.Flux; -import javax.annotation.PostConstruct; +import jakarta.annotation.PostConstruct; import java.util.Collections; import java.util.List; import java.util.Map; diff --git a/backend/src/test/java/de/grimsi/gameyfin/repositories/UnmappableFileRepositoryTest.java b/backend/src/test/java/de/grimsi/gameyfin/repositories/UnmappableFileRepositoryTest.java index 38f1309..1f5a003 100644 --- a/backend/src/test/java/de/grimsi/gameyfin/repositories/UnmappableFileRepositoryTest.java +++ b/backend/src/test/java/de/grimsi/gameyfin/repositories/UnmappableFileRepositoryTest.java @@ -1,7 +1,6 @@ package de.grimsi.gameyfin.repositories; import de.grimsi.gameyfin.entities.UnmappableFile; -import de.grimsi.gameyfin.service.FilesystemService; import org.jeasy.random.EasyRandom; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/backend/src/test/java/de/grimsi/gameyfin/service/GameServiceTest.java b/backend/src/test/java/de/grimsi/gameyfin/service/GameServiceTest.java index e1aba5a..36ebf51 100644 --- a/backend/src/test/java/de/grimsi/gameyfin/service/GameServiceTest.java +++ b/backend/src/test/java/de/grimsi/gameyfin/service/GameServiceTest.java @@ -95,7 +95,7 @@ class GameServiceTest { ResponseStatusException e = assertThrows(ResponseStatusException.class, () -> target.getDetectedGame(slug)); - assertThat(e.getStatus()).isEqualTo(HttpStatus.NOT_FOUND); + assertThat(e.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND); verify(detectedGameRepositoryMock, times(1)).findById(slug); } @@ -257,7 +257,7 @@ class GameServiceTest { ResponseStatusException e = assertThrows(ResponseStatusException.class, () -> target.mapPathToGame(input.getPath(), input.getSlug())); - assertThat(e.getStatus()).isEqualTo(HttpStatus.CONFLICT); + assertThat(e.getStatusCode()).isEqualTo(HttpStatus.CONFLICT); verify(detectedGameRepositoryMock, times(1)).existsBySlug(input.getSlug()); verify(detectedGameRepositoryMock, never()).findByPath(input.getPath()); verify(unmappableFileRepositoryMock, never()).findByPath(input.getPath()); @@ -273,7 +273,7 @@ class GameServiceTest { ResponseStatusException e = assertThrows(ResponseStatusException.class, () -> target.mapPathToGame(input.getPath(), input.getSlug())); - assertThat(e.getStatus()).isEqualTo(HttpStatus.NOT_FOUND); + assertThat(e.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND); verify(detectedGameRepositoryMock, times(1)).existsBySlug(input.getSlug()); verify(detectedGameRepositoryMock, times(1)).findByPath(input.getPath()); verify(unmappableFileRepositoryMock, times(1)).findByPath(input.getPath()); @@ -311,7 +311,7 @@ class GameServiceTest { ResponseStatusException e = assertThrows(ResponseStatusException.class, () -> target.refreshGame(slug)); - assertThat(e.getStatus()).isEqualTo(HttpStatus.NOT_FOUND); + assertThat(e.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND); verify(detectedGameRepositoryMock, times(1)).findById(slug); } } diff --git a/frontend/package-lock.json b/frontend/package-lock.json index dc8d824..86cbd28 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,12 +1,12 @@ { "name": "frontend", - "version": "1.3.2-SNAPSHOT", + "version": "1.4.0-SNAPSHOT", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "frontend", - "version": "1.3.2-SNAPSHOT", + "version": "1.4.0-SNAPSHOT", "dependencies": { "@angular/animations": "^14.0.0", "@angular/cdk": "^14.1.0", @@ -19,7 +19,7 @@ "@angular/platform-browser": "^14.0.0", "@angular/platform-browser-dynamic": "^14.0.0", "@angular/router": "^14.0.0", - "@angular/youtube-player": "^15.2.2", + "@angular/youtube-player": "^14.2.7", "mat-table-filter": "^10.2.0", "rxjs": "~7.5.0", "tslib": "^2.3.0", @@ -705,16 +705,16 @@ } }, "node_modules/@angular/youtube-player": { - "version": "15.2.2", - "resolved": "https://registry.npmjs.org/@angular/youtube-player/-/youtube-player-15.2.2.tgz", - "integrity": "sha512-C4tx9TPtAQUS00Z15ynqQvTkudEWaDtNWt/WWMfusQ2W4bzK2gAukDNgZrhQ41HpC8q0zms4+C9VuwPxU5+UQQ==", + "version": "14.2.7", + "resolved": "https://registry.npmjs.org/@angular/youtube-player/-/youtube-player-14.2.7.tgz", + "integrity": "sha512-/TtM2QtCIfrhUbrCd79g0jI/BzNMKNmvKR/oKVpAqfH2UZveJOq1YNNJG9Rw+rXE2yIteKNkco8ADU4Sz+32LQ==", "dependencies": { "@types/youtube": "^0.0.42", "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/common": "^15.0.0 || ^16.0.0", - "@angular/core": "^15.0.0 || ^16.0.0", + "@angular/common": "^14.0.0 || ^15.0.0", + "@angular/core": "^14.0.0 || ^15.0.0", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -12673,9 +12673,9 @@ } }, "@angular/youtube-player": { - "version": "15.2.2", - "resolved": "https://registry.npmjs.org/@angular/youtube-player/-/youtube-player-15.2.2.tgz", - "integrity": "sha512-C4tx9TPtAQUS00Z15ynqQvTkudEWaDtNWt/WWMfusQ2W4bzK2gAukDNgZrhQ41HpC8q0zms4+C9VuwPxU5+UQQ==", + "version": "14.2.7", + "resolved": "https://registry.npmjs.org/@angular/youtube-player/-/youtube-player-14.2.7.tgz", + "integrity": "sha512-/TtM2QtCIfrhUbrCd79g0jI/BzNMKNmvKR/oKVpAqfH2UZveJOq1YNNJG9Rw+rXE2yIteKNkco8ADU4Sz+32LQ==", "requires": { "@types/youtube": "^0.0.42", "tslib": "^2.3.0" diff --git a/frontend/package.json b/frontend/package.json index 20f45a4..62e4964 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "frontend", - "version": "1.3.2-SNAPSHOT", + "version": "1.4.0-SNAPSHOT", "scripts": { "ng": "ng", "start": "ng serve", @@ -21,7 +21,7 @@ "@angular/platform-browser": "^14.0.0", "@angular/platform-browser-dynamic": "^14.0.0", "@angular/router": "^14.0.0", - "@angular/youtube-player": "^15.2.2", + "@angular/youtube-player": "^14.2.7", "mat-table-filter": "^10.2.0", "rxjs": "~7.5.0", "tslib": "^2.3.0", diff --git a/pom.xml b/pom.xml index fc8948e..be44c49 100644 --- a/pom.xml +++ b/pom.xml @@ -18,7 +18,7 @@ org.springframework.boot spring-boot-starter-parent - 2.7.5 + 3.0.5