diff --git a/.github/workflows/build-dev.yml b/.github/workflows/build-dev.yml index 27a470cb..4b1bc908 100755 --- a/.github/workflows/build-dev.yml +++ b/.github/workflows/build-dev.yml @@ -22,10 +22,10 @@ jobs: uses: actions/checkout@v3 # 2) JDK 11버전 설치, 다른 JDK 버전을 사용하다면 수정 - - name: Set up JDK 17 + - name: Set up JDK 21 uses: actions/setup-java@v3 with: - java-version: '17' + java-version: '21' distribution: 'corretto' # 3) 환경변수 파일 생성 diff --git a/.github/workflows/release-dev-code_deploy.yml b/.github/workflows/release-dev-code_deploy.yml index bc42a9b0..5bac6b2a 100755 --- a/.github/workflows/release-dev-code_deploy.yml +++ b/.github/workflows/release-dev-code_deploy.yml @@ -21,11 +21,11 @@ jobs: - name: checkout uses: actions/checkout@v3 - - name: set up JDK 17 + - name: set up JDK 21 uses: actions/setup-java@v3 with: distribution: 'corretto' - java-version: '17' + java-version: '21' - name: mkdir resources folder run: | diff --git a/.github/workflows/release-prod.yml b/.github/workflows/release-prod.yml index d58d3442..5aec4a7f 100755 --- a/.github/workflows/release-prod.yml +++ b/.github/workflows/release-prod.yml @@ -22,11 +22,11 @@ jobs: - name: checkout uses: actions/checkout@v3 - - name: set up JDK 17 + - name: set up JDK 21 uses: actions/setup-java@v3 with: distribution: 'corretto' - java-version: '17' + java-version: '21' - name: mkdir resources folder run: | diff --git a/build.gradle b/build.gradle index 57ec1814..f79dca8e 100755 --- a/build.gradle +++ b/build.gradle @@ -1,13 +1,16 @@ plugins { - id 'org.springframework.boot' version '2.7.4' - id 'io.spring.dependency-management' version '1.0.14.RELEASE' + id 'org.springframework.boot' version '3.3.1' + id 'io.spring.dependency-management' version '1.1.5' id 'java' id 'jacoco' } group = 'org.sopt' version = '0.0.1-SNAPSHOT' -sourceCompatibility = '17' + +java { + sourceCompatibility = '21' +} configurations { compileOnly { @@ -15,6 +18,7 @@ configurations { } } + repositories { mavenCentral() } @@ -30,20 +34,30 @@ dependencies { implementation 'io.github.openfeign:feign-slf4j:12.4' // swagger - implementation 'org.springdoc:springdoc-openapi-ui:1.6.12' - implementation 'org.springdoc:springdoc-openapi-security:1.6.12' + implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.6.0' // sentry implementation 'io.sentry:sentry-spring-boot-starter:6.17.0' implementation 'io.sentry:sentry-logback:6.17.0' + // QueryDSL + implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' + annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta" // 버전 명시 + annotationProcessor "jakarta.annotation:jakarta.annotation-api" + annotationProcessor "jakarta.persistence:jakarta.persistence-api" + // lombok compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' + testAnnotationProcessor 'org.projectlombok:lombok' + + //postgres + runtimeOnly 'org.postgresql:postgresql' + // mapper - implementation 'org.mapstruct:mapstruct:1.4.2.Final' - annotationProcessor "org.mapstruct:mapstruct-processor:1.4.2.Final" + implementation 'org.mapstruct:mapstruct:1.5.3.Final' + annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.3.Final' // jwt implementation 'io.jsonwebtoken:jjwt-api:0.11.5' @@ -52,50 +66,42 @@ dependencies { // DB implementation 'org.springframework.boot:spring-boot-starter-data-jpa' - implementation 'org.springframework.boot:spring-boot-starter-data-jdbc' - // postgres - implementation group: 'org.postgresql', name: 'postgresql', version: '42.2.23' - runtimeOnly 'org.postgresql:postgresql' // redis implementation 'org.springframework.boot:spring-boot-starter-data-redis' - //ImmutableMap - implementation 'com.google.guava:guava:30.1.1-jre' - - // querydsl - implementation 'com.querydsl:querydsl-jpa' - annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa" - annotationProcessor "jakarta.annotation:jakarta.annotation-api" - annotationProcessor "jakarta.persistence:jakarta.persistence-api" + // ImmutableMap + implementation 'com.google.guava:guava:32.0.1-jre' //hibernate-type52 추가 array type을 위해 - implementation group: 'com.vladmihalcea', name: 'hibernate-types-52', version: '2.19.0' - implementation group: 'org.springframework.boot', name: 'spring-boot-starter-validation', version: '2.7.5' + implementation 'io.hypersistence:hypersistence-utils-hibernate-63:3.8.2' + implementation 'org.springframework.boot:spring-boot-starter-validation' - //aws-s3 - implementation group: 'org.springframework.cloud', name: 'spring-cloud-starter-aws', version: '2.2.5.RELEASE' + // aws-s3 + implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE' // retry - implementation 'org.springframework.retry:spring-retry:1.2.5.RELEASE' + implementation 'org.springframework.retry:spring-retry:1.3.0' // test testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.springframework.security:spring-security-test' - implementation 'com.google.code.gson:gson:2.8.7' - testImplementation 'org.mockito:mockito-core:4.5.1' - testImplementation 'org.mockito:mockito-junit-jupiter:4.5.1' + implementation 'com.google.code.gson:gson:2.10.1' + testImplementation 'org.mockito:mockito-core:5.5.0' + testImplementation 'org.mockito:mockito-junit-jupiter:5.5.0' implementation 'net.bytebuddy:byte-buddy:1.14.15' implementation 'org.objenesis:objenesis:3.4' // slack implementation 'com.slack.api:slack-api-client:1.30.0' -} + +} tasks.named('test') { useJUnitPlatform() } + test { exclude '**/*RepositoryTest.*' } \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 8049c684..dab2a015 100755 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip +networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists +zipStorePath=wrapper/dists \ No newline at end of file diff --git a/src/main/java/org/sopt/app/AppApplication.java b/src/main/java/org/sopt/app/AppApplication.java index 3c98d2ce..132d2b31 100755 --- a/src/main/java/org/sopt/app/AppApplication.java +++ b/src/main/java/org/sopt/app/AppApplication.java @@ -1,11 +1,11 @@ package org.sopt.app; +import jakarta.annotation.PostConstruct; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.data.jpa.repository.config.EnableJpaAuditing; import org.springframework.scheduling.annotation.EnableAsync; -import javax.annotation.PostConstruct; import java.util.TimeZone; import org.springframework.scheduling.annotation.EnableScheduling; diff --git a/src/main/java/org/sopt/app/application/auth/JwtTokenService.java b/src/main/java/org/sopt/app/application/auth/JwtTokenService.java index d93c13c9..46926382 100755 --- a/src/main/java/org/sopt/app/application/auth/JwtTokenService.java +++ b/src/main/java/org/sopt/app/application/auth/JwtTokenService.java @@ -10,7 +10,7 @@ import java.security.Key; import java.util.Base64; import java.util.Date; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import lombok.val; import org.joda.time.LocalDateTime; diff --git a/src/main/java/org/sopt/app/application/fortune/FortuneCardInfo.java b/src/main/java/org/sopt/app/application/fortune/FortuneCardInfo.java index 89afb46b..8f4ab943 100644 --- a/src/main/java/org/sopt/app/application/fortune/FortuneCardInfo.java +++ b/src/main/java/org/sopt/app/application/fortune/FortuneCardInfo.java @@ -8,7 +8,9 @@ public record FortuneCardInfo( Long id, String name, String description, - String imageUrl + String imageUrl, + String imageColorCode + ) { public static FortuneCardInfo of(FortuneCard fortuneCard) { return FortuneCardInfo.builder() @@ -16,6 +18,7 @@ public static FortuneCardInfo of(FortuneCard fortuneCard) { .name(fortuneCard.getName()) .description(fortuneCard.getDescription()) .imageUrl(fortuneCard.getImageUrl()) + .imageColorCode(fortuneCard.getImageColorCode()) .build(); } } diff --git a/src/main/java/org/sopt/app/application/fortune/FortuneEventListener.java b/src/main/java/org/sopt/app/application/fortune/FortuneEventListener.java index b877b90a..1ccc26da 100644 --- a/src/main/java/org/sopt/app/application/fortune/FortuneEventListener.java +++ b/src/main/java/org/sopt/app/application/fortune/FortuneEventListener.java @@ -1,21 +1,18 @@ package org.sopt.app.application.fortune; +import jakarta.transaction.Transactional; +import java.util.List; +import lombok.RequiredArgsConstructor; import org.sopt.app.common.utils.HttpHeadersUtils; import org.sopt.app.domain.enums.NotificationCategory; import org.sopt.app.presentation.fortune.FortuneAlarmRequest; -import org.springframework.transaction.event.TransactionPhase; -import org.springframework.transaction.event.TransactionalEventListener; import org.springframework.beans.factory.annotation.Value; -import org.springframework.scheduling.annotation.Async; -import org.springframework.web.client.RestTemplate; import org.springframework.http.*; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; - -import javax.transaction.Transactional; -import java.util.List; - -import lombok.RequiredArgsConstructor; -import lombok.val; +import org.springframework.transaction.event.TransactionPhase; +import org.springframework.transaction.event.TransactionalEventListener; +import org.springframework.web.client.RestTemplate; @Component @RequiredArgsConstructor diff --git a/src/main/java/org/sopt/app/application/poke/PokeEventListener.java b/src/main/java/org/sopt/app/application/poke/PokeEventListener.java index 8143a0ab..2fa25697 100755 --- a/src/main/java/org/sopt/app/application/poke/PokeEventListener.java +++ b/src/main/java/org/sopt/app/application/poke/PokeEventListener.java @@ -16,7 +16,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; -import javax.transaction.Transactional; +import jakarta.transaction.Transactional; import java.util.List; import java.util.UUID; diff --git a/src/main/java/org/sopt/app/application/s3/S3Service.java b/src/main/java/org/sopt/app/application/s3/S3Service.java index e5867ac1..692e9e82 100755 --- a/src/main/java/org/sopt/app/application/s3/S3Service.java +++ b/src/main/java/org/sopt/app/application/s3/S3Service.java @@ -9,6 +9,7 @@ import com.amazonaws.services.s3.model.CannedAccessControlList; import com.amazonaws.services.s3.model.ObjectMetadata; import com.amazonaws.services.s3.model.PutObjectRequest; +import jakarta.annotation.PostConstruct; import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -17,7 +18,6 @@ import java.util.ArrayList; import java.util.List; import java.util.UUID; -import javax.annotation.PostConstruct; import lombok.RequiredArgsConstructor; import lombok.val; import org.joda.time.LocalDateTime; @@ -51,19 +51,20 @@ public class S3Service { @Value("${cloud.aws.s3.uri}") private String baseURI; - private final AmazonS3 amazonS3; + private AmazonS3 amazonS3; @PostConstruct public AmazonS3 getAmazonS3() { val awsCredentials = new BasicAWSCredentials(accessKey, secretKey); - return AmazonS3ClientBuilder.standard() + AmazonS3 amazonS3 = AmazonS3ClientBuilder.standard() .withRegion(region) .withCredentials(new AWSStaticCredentialsProvider(awsCredentials)) .build(); + this.amazonS3 = amazonS3; + return amazonS3; } - public List uploadDeprecated(List multipartFiles) { if (multipartFiles == null || multipartFiles.get(0).isEmpty()) { return new ArrayList<>(); diff --git a/src/main/java/org/sopt/app/application/stamp/StampService.java b/src/main/java/org/sopt/app/application/stamp/StampService.java index 0f5a8ece..8c49f4a8 100755 --- a/src/main/java/org/sopt/app/application/stamp/StampService.java +++ b/src/main/java/org/sopt/app/application/stamp/StampService.java @@ -3,7 +3,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; -import javax.validation.Valid; +import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.val; import org.sopt.app.common.event.Events; diff --git a/src/main/java/org/sopt/app/common/config/JwtAuthenticationFilter.java b/src/main/java/org/sopt/app/common/config/JwtAuthenticationFilter.java index 65faf112..2e28f85e 100755 --- a/src/main/java/org/sopt/app/common/config/JwtAuthenticationFilter.java +++ b/src/main/java/org/sopt/app/common/config/JwtAuthenticationFilter.java @@ -1,11 +1,10 @@ package org.sopt.app.common.config; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import lombok.val; import org.sopt.app.application.auth.JwtTokenService; @@ -14,17 +13,17 @@ import org.sopt.app.common.response.ErrorCode; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Component; -import org.springframework.web.filter.GenericFilterBean; +import org.springframework.web.filter.OncePerRequestFilter; @Component @RequiredArgsConstructor -public class JwtAuthenticationFilter extends GenericFilterBean { +public class JwtAuthenticationFilter extends OncePerRequestFilter { private final JwtTokenService jwtTokenService; @Override - public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) - throws IOException, ServletException { + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) + throws ServletException, IOException { val token = jwtTokenService.getToken((HttpServletRequest) request); if (token != null) { if (jwtTokenService.validateToken(token)) { @@ -38,7 +37,7 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha throw new UnauthorizedException(ErrorCode.INVALID_ACCESS_TOKEN.getMessage()); } } - chain.doFilter(request, response); + filterChain.doFilter(request, response); } - } + diff --git a/src/main/java/org/sopt/app/common/config/JwtExceptionFilter.java b/src/main/java/org/sopt/app/common/config/JwtExceptionFilter.java index fd3a1b10..7e630e8c 100755 --- a/src/main/java/org/sopt/app/common/config/JwtExceptionFilter.java +++ b/src/main/java/org/sopt/app/common/config/JwtExceptionFilter.java @@ -2,10 +2,10 @@ import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.AllArgsConstructor; import org.sopt.app.common.exception.UnauthorizedException; import org.sopt.app.common.response.CommonResponse; diff --git a/src/main/java/org/sopt/app/common/config/QuerydslConfiguration.java b/src/main/java/org/sopt/app/common/config/QuerydslConfiguration.java index 8a9edf07..1d85bcae 100755 --- a/src/main/java/org/sopt/app/common/config/QuerydslConfiguration.java +++ b/src/main/java/org/sopt/app/common/config/QuerydslConfiguration.java @@ -1,8 +1,8 @@ package org.sopt.app.common.config; import com.querydsl.jpa.impl.JPAQueryFactory; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/src/main/java/org/sopt/app/common/config/WebSecurityConfig.java b/src/main/java/org/sopt/app/common/config/WebSecurityConfig.java index ccbfa289..c10d8a78 100755 --- a/src/main/java/org/sopt/app/common/config/WebSecurityConfig.java +++ b/src/main/java/org/sopt/app/common/config/WebSecurityConfig.java @@ -1,58 +1,72 @@ package org.sopt.app.common.config; -import java.util.Arrays; +import jakarta.servlet.http.HttpServletResponse; +import java.util.List; import lombok.RequiredArgsConstructor; -import org.sopt.app.application.auth.JwtTokenService; import org.springframework.context.annotation.Bean; -import org.springframework.http.HttpMethod; +import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; +import org.springframework.security.config.annotation.web.configurers.RequestCacheConfigurer; +import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; import org.springframework.security.web.firewall.DefaultHttpFirewall; import org.springframework.security.web.firewall.HttpFirewall; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.CorsConfigurationSource; -import org.springframework.web.cors.CorsUtils; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; @RequiredArgsConstructor @EnableWebSecurity +@Configuration public class WebSecurityConfig { private static final String[] SwaggerPatterns = { + "/docs/**", "/swagger-resources/**", "/swagger-ui/**", "/v3/api-docs/**", "/webjars/**" }; - private final JwtTokenService jwtTokenService; + + private static final String[] other = { + "/api/v1/**", + "/api/v2/health/**", + "/api/v2/auth/**", + "/api/v2/config/**", + "/api/v2/firebase/**", + "/api/v2/notification/**" + }; + private final JwtExceptionFilter jwtExceptionFilter; - private JwtAuthenticationFilter jwtAuthenticationFilter; + private final JwtAuthenticationFilter jwtAuthenticationFilter; @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { - jwtAuthenticationFilter = new JwtAuthenticationFilter(jwtTokenService); - - http.httpBasic().disable() - .cors().configurationSource(corsConfigurationSource()) - .and() - .csrf().disable() - .authorizeRequests() - .requestMatchers(CorsUtils::isPreFlightRequest).permitAll() - .antMatchers(SwaggerPatterns).permitAll() - .antMatchers("/api/v1/**").permitAll() - .antMatchers("/api/v2/health/**").permitAll() - .antMatchers("/api/v2/auth/**").permitAll() - .antMatchers("/api/v2/config/**").permitAll() - .antMatchers("/api/v2/firebase/**").permitAll() - .antMatchers(HttpMethod.POST , "/api/v2/notification/**").permitAll() - .anyRequest().authenticated() - .and() - .addFilterBefore(jwtAuthenticationFilter, - UsernamePasswordAuthenticationFilter.class) - .addFilterBefore(jwtExceptionFilter, JwtAuthenticationFilter.class); - + http + .csrf(AbstractHttpConfigurer::disable) + .httpBasic(AbstractHttpConfigurer::disable) + .requestCache(RequestCacheConfigurer::disable) + .formLogin(AbstractHttpConfigurer::disable) + .cors(cors -> cors.configurationSource(corsConfigurationSource())) + .sessionManagement(sessionManagementConfigurer -> + sessionManagementConfigurer + .sessionCreationPolicy(SessionCreationPolicy.STATELESS)) + .exceptionHandling(exceptionHandling -> + exceptionHandling.authenticationEntryPoint((request, response, authException) -> { + response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized"); + }) + ) + .authorizeHttpRequests(auth -> { + auth.requestMatchers(SwaggerPatterns).permitAll(); + auth.requestMatchers(other).permitAll(); + auth.anyRequest().authenticated(); + }); + // 필터 체인에 필터 추가 + http.addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class); + http.addFilterBefore(jwtExceptionFilter, JwtAuthenticationFilter.class); return http.build(); } @@ -60,18 +74,16 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { protected CorsConfigurationSource corsConfigurationSource() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", getDefaultCorsConfiguration()); - return source; } private CorsConfiguration getDefaultCorsConfiguration() { CorsConfiguration configuration = new CorsConfiguration(); - configuration.setAllowedOrigins(Arrays.asList("*")); - configuration.setAllowedHeaders(Arrays.asList("*")); - configuration.setAllowedMethods(Arrays.asList("*")); + configuration.setAllowedOrigins(List.of("*")); + configuration.setAllowedHeaders(List.of("*")); + configuration.setAllowedMethods(List.of("*")); configuration.setAllowCredentials(true); configuration.setMaxAge(3600L); - return configuration; } diff --git a/src/main/java/org/sopt/app/common/response/CommonControllerAdvice.java b/src/main/java/org/sopt/app/common/response/CommonControllerAdvice.java index 13cccc13..f8d52b82 100755 --- a/src/main/java/org/sopt/app/common/response/CommonControllerAdvice.java +++ b/src/main/java/org/sopt/app/common/response/CommonControllerAdvice.java @@ -1,7 +1,7 @@ package org.sopt.app.common.response; import java.util.Arrays; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import lombok.val; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/org/sopt/app/domain/entity/AppService.java b/src/main/java/org/sopt/app/domain/entity/AppService.java index 9b5c6a9d..a764f035 100755 --- a/src/main/java/org/sopt/app/domain/entity/AppService.java +++ b/src/main/java/org/sopt/app/domain/entity/AppService.java @@ -1,7 +1,7 @@ package org.sopt.app.domain.entity; -import javax.persistence.*; -import javax.validation.constraints.NotNull; +import jakarta.persistence.*; +import jakarta.validation.constraints.NotNull; import lombok.*; @Getter diff --git a/src/main/java/org/sopt/app/domain/entity/BaseEntity.java b/src/main/java/org/sopt/app/domain/entity/BaseEntity.java index 827b30b1..f0e7cc2e 100755 --- a/src/main/java/org/sopt/app/domain/entity/BaseEntity.java +++ b/src/main/java/org/sopt/app/domain/entity/BaseEntity.java @@ -7,9 +7,9 @@ import org.springframework.data.jpa.domain.support.AuditingEntityListener; import org.springframework.format.annotation.DateTimeFormat; -import javax.persistence.Column; -import javax.persistence.EntityListeners; -import javax.persistence.MappedSuperclass; +import jakarta.persistence.Column; +import jakarta.persistence.EntityListeners; +import jakarta.persistence.MappedSuperclass; import java.time.LocalDateTime; @Getter diff --git a/src/main/java/org/sopt/app/domain/entity/Friend.java b/src/main/java/org/sopt/app/domain/entity/Friend.java index a07fca9d..db2d8895 100755 --- a/src/main/java/org/sopt/app/domain/entity/Friend.java +++ b/src/main/java/org/sopt/app/domain/entity/Friend.java @@ -1,8 +1,8 @@ package org.sopt.app.domain.entity; -import javax.persistence.*; +import jakarta.persistence.*; import lombok.*; -import javax.validation.constraints.NotNull; +import jakarta.validation.constraints.NotNull; import org.hibernate.annotations.ColumnDefault; @Getter diff --git a/src/main/java/org/sopt/app/domain/entity/MainDescription.java b/src/main/java/org/sopt/app/domain/entity/MainDescription.java index f6402257..373c96fe 100755 --- a/src/main/java/org/sopt/app/domain/entity/MainDescription.java +++ b/src/main/java/org/sopt/app/domain/entity/MainDescription.java @@ -1,6 +1,6 @@ package org.sopt.app.domain.entity; -import javax.persistence.*; +import jakarta.persistence.*; import lombok.*; @Entity diff --git a/src/main/java/org/sopt/app/domain/entity/Notification.java b/src/main/java/org/sopt/app/domain/entity/Notification.java index d2de5dda..10424998 100755 --- a/src/main/java/org/sopt/app/domain/entity/Notification.java +++ b/src/main/java/org/sopt/app/domain/entity/Notification.java @@ -1,8 +1,8 @@ package org.sopt.app.domain.entity; -import javax.persistence.*; +import jakarta.persistence.*; -import javax.validation.constraints.NotNull; +import jakarta.validation.constraints.NotNull; import lombok.*; import org.hibernate.annotations.ColumnDefault; import org.sopt.app.domain.enums.NotificationCategory; diff --git a/src/main/java/org/sopt/app/domain/entity/PushToken.java b/src/main/java/org/sopt/app/domain/entity/PushToken.java index fab7c794..dc12711c 100755 --- a/src/main/java/org/sopt/app/domain/entity/PushToken.java +++ b/src/main/java/org/sopt/app/domain/entity/PushToken.java @@ -1,10 +1,10 @@ package org.sopt.app.domain.entity; -import javax.validation.constraints.NotNull; +import jakarta.validation.constraints.NotNull; import lombok.*; import org.sopt.app.domain.enums.PushTokenPlatform; -import javax.persistence.*; +import jakarta.persistence.*; @Entity @Getter diff --git a/src/main/java/org/sopt/app/domain/entity/User.java b/src/main/java/org/sopt/app/domain/entity/User.java index 44062192..040fa12c 100755 --- a/src/main/java/org/sopt/app/domain/entity/User.java +++ b/src/main/java/org/sopt/app/domain/entity/User.java @@ -3,7 +3,7 @@ import lombok.*; import java.util.Collection; import java.util.Collections; -import javax.persistence.*; +import jakarta.persistence.*; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; diff --git a/src/main/java/org/sopt/app/domain/entity/fortune/FortuneCard.java b/src/main/java/org/sopt/app/domain/entity/fortune/FortuneCard.java index 8a4f3d38..f350422f 100755 --- a/src/main/java/org/sopt/app/domain/entity/fortune/FortuneCard.java +++ b/src/main/java/org/sopt/app/domain/entity/fortune/FortuneCard.java @@ -1,6 +1,6 @@ package org.sopt.app.domain.entity.fortune; -import javax.persistence.*; +import jakarta.persistence.*; import lombok.*; @Getter @@ -18,4 +18,5 @@ public class FortuneCard { private String imageUrl; + private String imageColorCode; } diff --git a/src/main/java/org/sopt/app/domain/entity/fortune/FortuneWord.java b/src/main/java/org/sopt/app/domain/entity/fortune/FortuneWord.java index 60695e07..e1cdc502 100755 --- a/src/main/java/org/sopt/app/domain/entity/fortune/FortuneWord.java +++ b/src/main/java/org/sopt/app/domain/entity/fortune/FortuneWord.java @@ -1,7 +1,7 @@ package org.sopt.app.domain.entity.fortune; -import javax.persistence.*; -import javax.validation.constraints.NotNull; +import jakarta.persistence.*; +import jakarta.validation.constraints.NotNull; import lombok.*; @Getter diff --git a/src/main/java/org/sopt/app/domain/entity/fortune/UserFortune.java b/src/main/java/org/sopt/app/domain/entity/fortune/UserFortune.java index fa4488af..bbafdf2b 100755 --- a/src/main/java/org/sopt/app/domain/entity/fortune/UserFortune.java +++ b/src/main/java/org/sopt/app/domain/entity/fortune/UserFortune.java @@ -1,8 +1,8 @@ package org.sopt.app.domain.entity.fortune; import java.time.LocalDate; -import javax.persistence.*; -import javax.validation.constraints.NotNull; +import jakarta.persistence.*; +import jakarta.validation.constraints.NotNull; import lombok.*; @Getter diff --git a/src/main/java/org/sopt/app/domain/entity/poke/PokeHistory.java b/src/main/java/org/sopt/app/domain/entity/poke/PokeHistory.java index 4405dae0..11860133 100755 --- a/src/main/java/org/sopt/app/domain/entity/poke/PokeHistory.java +++ b/src/main/java/org/sopt/app/domain/entity/poke/PokeHistory.java @@ -1,9 +1,12 @@ package org.sopt.app.domain.entity.poke; -import javax.persistence.*; -import lombok.*; -import javax.validation.constraints.NotNull; -import org.hibernate.annotations.Type; +import jakarta.persistence.*; +import jakarta.validation.constraints.NotNull; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; import org.sopt.app.domain.entity.BaseEntity; @Getter @@ -24,7 +27,7 @@ public class PokeHistory extends BaseEntity { @NotNull private Long pokedId; - @Type(type = "org.hibernate.type.TextType") + @Column(columnDefinition = "TEXT") private String message; private Boolean isReply; diff --git a/src/main/java/org/sopt/app/domain/entity/poke/PokeMessage.java b/src/main/java/org/sopt/app/domain/entity/poke/PokeMessage.java index b9e58d22..9bf0d090 100755 --- a/src/main/java/org/sopt/app/domain/entity/poke/PokeMessage.java +++ b/src/main/java/org/sopt/app/domain/entity/poke/PokeMessage.java @@ -1,10 +1,12 @@ package org.sopt.app.domain.entity.poke; -import lombok.*; - -import javax.persistence.*; -import javax.validation.constraints.NotNull; -import org.hibernate.annotations.Type; +import jakarta.persistence.*; +import jakarta.validation.constraints.NotNull; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; import org.sopt.app.domain.entity.BaseEntity; import org.sopt.app.domain.enums.PokeMessageType; import org.sopt.app.domain.enums.PokeMessageTypeConverter; @@ -22,7 +24,7 @@ public class PokeMessage extends BaseEntity { private Long id; @NotNull - @Type(type = "org.hibernate.type.TextType") + @Column(columnDefinition = "TEXT") private String content; @NotNull diff --git a/src/main/java/org/sopt/app/domain/entity/soptamp/Mission.java b/src/main/java/org/sopt/app/domain/entity/soptamp/Mission.java index 70f8c542..c4ca629e 100755 --- a/src/main/java/org/sopt/app/domain/entity/soptamp/Mission.java +++ b/src/main/java/org/sopt/app/domain/entity/soptamp/Mission.java @@ -1,18 +1,13 @@ package org.sopt.app.domain.entity.soptamp; -import com.vladmihalcea.hibernate.type.array.ListArrayType; +import io.hypersistence.utils.hibernate.type.array.StringArrayType; +import jakarta.persistence.*; import java.util.List; -import javax.persistence.*; import lombok.*; import org.hibernate.annotations.Type; -import org.hibernate.annotations.TypeDef; @Entity -@TypeDef( - name = "list-array", - typeClass = ListArrayType.class -) @Getter @Builder @AllArgsConstructor @@ -30,7 +25,7 @@ public class Mission { private boolean display; - @Type(type = "list-array") + @Type(value= StringArrayType.class) @Column(columnDefinition = "text[]") private List profileImage; } diff --git a/src/main/java/org/sopt/app/domain/entity/soptamp/SoptampPoint.java b/src/main/java/org/sopt/app/domain/entity/soptamp/SoptampPoint.java index c9b2891f..3452d190 100755 --- a/src/main/java/org/sopt/app/domain/entity/soptamp/SoptampPoint.java +++ b/src/main/java/org/sopt/app/domain/entity/soptamp/SoptampPoint.java @@ -1,6 +1,6 @@ package org.sopt.app.domain.entity.soptamp; -import javax.persistence.*; +import jakarta.persistence.*; import lombok.*; import org.sopt.app.domain.entity.BaseEntity; diff --git a/src/main/java/org/sopt/app/domain/entity/soptamp/SoptampUser.java b/src/main/java/org/sopt/app/domain/entity/soptamp/SoptampUser.java index 33dfe025..08d61db3 100755 --- a/src/main/java/org/sopt/app/domain/entity/soptamp/SoptampUser.java +++ b/src/main/java/org/sopt/app/domain/entity/soptamp/SoptampUser.java @@ -1,6 +1,6 @@ package org.sopt.app.domain.entity.soptamp; -import javax.persistence.*; +import jakarta.persistence.*; import lombok.*; import org.sopt.app.domain.entity.BaseEntity; import org.sopt.app.domain.enums.PlaygroundPart; diff --git a/src/main/java/org/sopt/app/domain/entity/soptamp/Stamp.java b/src/main/java/org/sopt/app/domain/entity/soptamp/Stamp.java index 9d302408..d179e117 100755 --- a/src/main/java/org/sopt/app/domain/entity/soptamp/Stamp.java +++ b/src/main/java/org/sopt/app/domain/entity/soptamp/Stamp.java @@ -1,19 +1,14 @@ package org.sopt.app.domain.entity.soptamp; -import com.vladmihalcea.hibernate.type.array.ListArrayType; +import io.hypersistence.utils.hibernate.type.array.StringArrayType; +import jakarta.persistence.*; import java.util.List; -import javax.persistence.*; import lombok.*; import org.hibernate.annotations.Type; -import org.hibernate.annotations.TypeDef; import org.sopt.app.domain.entity.BaseEntity; @Entity -@TypeDef( - name = "list-array", - typeClass = ListArrayType.class -) @Getter @Builder @NoArgsConstructor @@ -26,8 +21,8 @@ public class Stamp extends BaseEntity { private String contents; - @Type(type = "list-array") @Column(columnDefinition = "text[]") + @Type(value= StringArrayType.class) private List images; private Long userId; diff --git a/src/main/java/org/sopt/app/domain/enums/PokeMessageTypeConverter.java b/src/main/java/org/sopt/app/domain/enums/PokeMessageTypeConverter.java index 2d9dce19..0542cdbd 100755 --- a/src/main/java/org/sopt/app/domain/enums/PokeMessageTypeConverter.java +++ b/src/main/java/org/sopt/app/domain/enums/PokeMessageTypeConverter.java @@ -3,8 +3,8 @@ import org.sopt.app.common.exception.BadRequestException; import org.sopt.app.common.response.ErrorCode; -import javax.persistence.AttributeConverter; -import javax.persistence.Converter; +import jakarta.persistence.AttributeConverter; +import jakarta.persistence.Converter; import java.util.Objects; @Converter diff --git a/src/main/java/org/sopt/app/interfaces/postgres/fortune/FortuneCardRepositoryImpl.java b/src/main/java/org/sopt/app/interfaces/postgres/fortune/FortuneCardRepositoryImpl.java index 57267833..14107358 100644 --- a/src/main/java/org/sopt/app/interfaces/postgres/fortune/FortuneCardRepositoryImpl.java +++ b/src/main/java/org/sopt/app/interfaces/postgres/fortune/FortuneCardRepositoryImpl.java @@ -16,7 +16,7 @@ public class FortuneCardRepositoryImpl implements FortuneCardRepository { @Override public Optional findByRelatedUserId(final Long userId) { - QFortuneCard fortuneCard = new QFortuneCard("fortuneCard"); + QFortuneCard fortuneCard = QFortuneCard.fortuneCard; return Optional.ofNullable( queryFactory.select(fortuneCard) diff --git a/src/main/java/org/sopt/app/presentation/auth/AppAuthController.java b/src/main/java/org/sopt/app/presentation/auth/AppAuthController.java index 28d39b3a..122783df 100755 --- a/src/main/java/org/sopt/app/presentation/auth/AppAuthController.java +++ b/src/main/java/org/sopt/app/presentation/auth/AppAuthController.java @@ -5,11 +5,10 @@ import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; -import javax.validation.Valid; +import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.val; import org.sopt.app.facade.AuthFacade; -import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PatchMapping; import org.springframework.web.bind.annotation.PostMapping; diff --git a/src/main/java/org/sopt/app/presentation/auth/AppAuthRequest.java b/src/main/java/org/sopt/app/presentation/auth/AppAuthRequest.java index 8d98eba2..45642948 100755 --- a/src/main/java/org/sopt/app/presentation/auth/AppAuthRequest.java +++ b/src/main/java/org/sopt/app/presentation/auth/AppAuthRequest.java @@ -1,7 +1,7 @@ package org.sopt.app.presentation.auth; import io.swagger.v3.oas.annotations.media.Schema; -import javax.validation.constraints.NotNull; +import jakarta.validation.constraints.NotNull; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/org/sopt/app/presentation/fortune/FortuneAlarmRequest.java b/src/main/java/org/sopt/app/presentation/fortune/FortuneAlarmRequest.java index fa845d0b..159d1ad4 100755 --- a/src/main/java/org/sopt/app/presentation/fortune/FortuneAlarmRequest.java +++ b/src/main/java/org/sopt/app/presentation/fortune/FortuneAlarmRequest.java @@ -1,14 +1,9 @@ package org.sopt.app.presentation.fortune; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; import java.util.List; -import javax.validation.constraints.NotNull; -import lombok.AccessLevel; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.ToString; +import lombok.*; @Getter @NoArgsConstructor(access = AccessLevel.PRIVATE) diff --git a/src/main/java/org/sopt/app/presentation/fortune/FortuneCardResponse.java b/src/main/java/org/sopt/app/presentation/fortune/FortuneCardResponse.java index 4ff70ef6..2ff861be 100755 --- a/src/main/java/org/sopt/app/presentation/fortune/FortuneCardResponse.java +++ b/src/main/java/org/sopt/app/presentation/fortune/FortuneCardResponse.java @@ -7,7 +7,8 @@ public record FortuneCardResponse( String name, String description, - String imageUrl + String imageUrl, + String imageColorCode ) { public static FortuneCardResponse of(FortuneCardInfo fortuneCardInfo) { @@ -15,6 +16,7 @@ public static FortuneCardResponse of(FortuneCardInfo fortuneCardInfo) { .name(fortuneCardInfo.name()) .description(fortuneCardInfo.description()) .imageUrl(fortuneCardInfo.imageUrl()) + .imageColorCode(fortuneCardInfo.imageColorCode()) .build(); } } diff --git a/src/main/java/org/sopt/app/presentation/fortune/FortuneController.java b/src/main/java/org/sopt/app/presentation/fortune/FortuneController.java index 69441023..9b64cd99 100755 --- a/src/main/java/org/sopt/app/presentation/fortune/FortuneController.java +++ b/src/main/java/org/sopt/app/presentation/fortune/FortuneController.java @@ -1,5 +1,6 @@ package org.sopt.app.presentation.fortune; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; import org.sopt.app.application.fortune.FortuneProvider; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.web.bind.annotation.*; @@ -16,6 +17,7 @@ @RestController @RequiredArgsConstructor @RequestMapping("/api/v2/fortune") +@SecurityRequirement(name = "Authorization") public class FortuneController { private final FortuneProvider fortuneProvider; diff --git a/src/main/java/org/sopt/app/presentation/mission/MissionController.java b/src/main/java/org/sopt/app/presentation/mission/MissionController.java index 26e5c73e..42499b56 100755 --- a/src/main/java/org/sopt/app/presentation/mission/MissionController.java +++ b/src/main/java/org/sopt/app/presentation/mission/MissionController.java @@ -7,12 +7,11 @@ import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import java.util.List; -import javax.validation.Valid; +import jakarta.validation.Valid; import lombok.AllArgsConstructor; import lombok.val; import org.sopt.app.application.mission.MissionService; import org.sopt.app.domain.entity.User; -import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.GetMapping; diff --git a/src/main/java/org/sopt/app/presentation/mission/MissionRequest.java b/src/main/java/org/sopt/app/presentation/mission/MissionRequest.java index 58d953a7..e4d55acc 100755 --- a/src/main/java/org/sopt/app/presentation/mission/MissionRequest.java +++ b/src/main/java/org/sopt/app/presentation/mission/MissionRequest.java @@ -1,7 +1,7 @@ package org.sopt.app.presentation.mission; import io.swagger.v3.oas.annotations.media.Schema; -import javax.validation.constraints.NotNull; +import jakarta.validation.constraints.NotNull; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/org/sopt/app/presentation/notification/NotificationController.java b/src/main/java/org/sopt/app/presentation/notification/NotificationController.java index 850d9e92..2b81aa2d 100755 --- a/src/main/java/org/sopt/app/presentation/notification/NotificationController.java +++ b/src/main/java/org/sopt/app/presentation/notification/NotificationController.java @@ -6,7 +6,7 @@ import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import java.util.List; -import javax.validation.Valid; +import jakarta.validation.Valid; import lombok.AllArgsConstructor; import lombok.val; import org.sopt.app.application.notification.NotificationService; @@ -15,7 +15,6 @@ import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.web.PageableDefault; -import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.GetMapping; diff --git a/src/main/java/org/sopt/app/presentation/notification/NotificationRequest.java b/src/main/java/org/sopt/app/presentation/notification/NotificationRequest.java index cf324ce4..12cf8bfc 100755 --- a/src/main/java/org/sopt/app/presentation/notification/NotificationRequest.java +++ b/src/main/java/org/sopt/app/presentation/notification/NotificationRequest.java @@ -3,7 +3,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; -import javax.validation.constraints.NotNull; +import jakarta.validation.constraints.NotNull; import lombok.*; import org.sopt.app.domain.enums.NotificationCategory; diff --git a/src/main/java/org/sopt/app/presentation/notification/PushTokenRequest.java b/src/main/java/org/sopt/app/presentation/notification/PushTokenRequest.java index d18e23a2..c66e6652 100755 --- a/src/main/java/org/sopt/app/presentation/notification/PushTokenRequest.java +++ b/src/main/java/org/sopt/app/presentation/notification/PushTokenRequest.java @@ -3,7 +3,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import javax.validation.constraints.NotNull; +import jakarta.validation.constraints.NotNull; import java.util.List; @NoArgsConstructor(access = AccessLevel.PRIVATE) diff --git a/src/main/java/org/sopt/app/presentation/poke/PokeRequest.java b/src/main/java/org/sopt/app/presentation/poke/PokeRequest.java index a398d057..3045615f 100755 --- a/src/main/java/org/sopt/app/presentation/poke/PokeRequest.java +++ b/src/main/java/org/sopt/app/presentation/poke/PokeRequest.java @@ -2,7 +2,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import java.util.List; -import javax.validation.constraints.NotNull; +import jakarta.validation.constraints.NotNull; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/org/sopt/app/presentation/stamp/StampController.java b/src/main/java/org/sopt/app/presentation/stamp/StampController.java index 30cc6e33..0bd4a283 100755 --- a/src/main/java/org/sopt/app/presentation/stamp/StampController.java +++ b/src/main/java/org/sopt/app/presentation/stamp/StampController.java @@ -6,13 +6,12 @@ import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import java.util.List; -import javax.validation.Valid; +import jakarta.validation.Valid; import lombok.AllArgsConstructor; import lombok.val; import org.sopt.app.application.stamp.StampService; import org.sopt.app.domain.entity.User; import org.sopt.app.facade.SoptampFacade; -import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/org/sopt/app/presentation/stamp/StampRequest.java b/src/main/java/org/sopt/app/presentation/stamp/StampRequest.java index 7ba41e05..68bd98b7 100755 --- a/src/main/java/org/sopt/app/presentation/stamp/StampRequest.java +++ b/src/main/java/org/sopt/app/presentation/stamp/StampRequest.java @@ -1,7 +1,7 @@ package org.sopt.app.presentation.stamp; import io.swagger.v3.oas.annotations.media.Schema; -import javax.validation.constraints.NotNull; +import jakarta.validation.constraints.NotNull; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/org/sopt/app/presentation/user/UserController.java b/src/main/java/org/sopt/app/presentation/user/UserController.java index 0284561c..798e8e6b 100755 --- a/src/main/java/org/sopt/app/presentation/user/UserController.java +++ b/src/main/java/org/sopt/app/presentation/user/UserController.java @@ -5,7 +5,7 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.security.SecurityRequirement; -import javax.validation.Valid; +import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.val; import org.sopt.app.application.soptamp.SoptampUserService; diff --git a/src/main/java/org/sopt/app/presentation/user/UserPushTokenController.java b/src/main/java/org/sopt/app/presentation/user/UserPushTokenController.java index 3a7d5ad7..392e4394 100755 --- a/src/main/java/org/sopt/app/presentation/user/UserPushTokenController.java +++ b/src/main/java/org/sopt/app/presentation/user/UserPushTokenController.java @@ -5,14 +5,13 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.security.SecurityRequirement; -import javax.validation.Valid; +import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.val; import org.sopt.app.application.notification.PushTokenService; import org.sopt.app.domain.entity.PushToken; import org.sopt.app.domain.entity.User; import org.sopt.app.presentation.notification.*; -import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.*; diff --git a/src/main/java/org/sopt/app/presentation/user/UserRequest.java b/src/main/java/org/sopt/app/presentation/user/UserRequest.java index 709652b3..82d628be 100755 --- a/src/main/java/org/sopt/app/presentation/user/UserRequest.java +++ b/src/main/java/org/sopt/app/presentation/user/UserRequest.java @@ -1,7 +1,7 @@ package org.sopt.app.presentation.user; import io.swagger.v3.oas.annotations.media.Schema; -import javax.validation.constraints.NotNull; +import jakarta.validation.constraints.NotNull; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/org/sopt/app/presentation/user/UserWithdrawController.java b/src/main/java/org/sopt/app/presentation/user/UserWithdrawController.java index fad9f199..d2afbd8b 100755 --- a/src/main/java/org/sopt/app/presentation/user/UserWithdrawController.java +++ b/src/main/java/org/sopt/app/presentation/user/UserWithdrawController.java @@ -13,12 +13,11 @@ import org.sopt.app.domain.entity.User; import org.sopt.app.presentation.notification.PushTokenRequest; import org.sopt.app.presentation.notification.PushTokenResponse; -import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.*; -import javax.validation.Valid; +import jakarta.validation.Valid; @RestController @RequiredArgsConstructor