Skip to content

Commit

Permalink
feat: upgrade to Spring Boot 3 (#67)
Browse files Browse the repository at this point in the history
  • Loading branch information
igor-baiborodine committed Oct 5, 2023
1 parent df1233e commit c558111
Show file tree
Hide file tree
Showing 25 changed files with 90 additions and 96 deletions.
28 changes: 10 additions & 18 deletions pom.xml
Expand Up @@ -13,8 +13,8 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.1</version>
<relativePath /> <!-- lookup parent from bookingRepository -->
<version>3.1.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

<scm>
Expand Down Expand Up @@ -88,16 +88,10 @@
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
<version>1.3.3</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
Expand All @@ -109,8 +103,7 @@
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
Expand All @@ -121,23 +114,22 @@
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>spring-mock-mvc</artifactId>
<version>5.1.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.6.9</version>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.5.1.Final</version>
<version>1.5.3.Final</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.5.1.Final</version>
<version>1.5.3.Final</version>
<optional>true</optional>
</dependency>
</dependencies>
Expand Down Expand Up @@ -188,7 +180,7 @@
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.8</version>
<version>0.8.10</version>
<executions>
<execution>
<id>prepare-agent</id>
Expand Down
Expand Up @@ -9,7 +9,7 @@
import com.kiroule.campsite.booking.api.service.BookingServiceImpl;
import com.kiroule.campsite.booking.api.service.CampsiteService;
import com.kiroule.campsite.booking.api.service.CampsiteServiceImpl;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
Expand Down
@@ -1,6 +1,6 @@
package com.kiroule.campsite.booking.api.config;

import javax.validation.constraints.NotNull;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.validation.annotation.Validated;
Expand Down
Expand Up @@ -10,7 +10,7 @@
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import jakarta.validation.Valid;
import java.time.LocalDate;
import java.util.List;
import java.util.UUID;
Expand Down
Expand Up @@ -6,12 +6,12 @@
import com.kiroule.campsite.booking.api.model.validator.BookingStartDateBeforeEndDate;
import java.time.LocalDate;
import java.util.UUID;
import javax.persistence.Column;
import javax.persistence.Version;
import javax.validation.constraints.Future;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import jakarta.persistence.Column;
import jakarta.persistence.Version;
import jakarta.validation.constraints.Future;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
Expand Down
Expand Up @@ -7,7 +7,7 @@
import java.time.LocalDate;
import java.util.List;
import java.util.UUID;
import javax.validation.Valid;
import jakarta.validation.Valid;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.hateoas.EntityModel;
import org.springframework.http.MediaType;
Expand Down
Expand Up @@ -6,10 +6,10 @@
import com.kiroule.campsite.booking.api.model.validator.BookingStartDateBeforeEndDate;
import java.time.LocalDate;
import java.util.UUID;
import javax.validation.constraints.Future;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import jakarta.validation.constraints.Future;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
Expand Down
Expand Up @@ -9,24 +9,27 @@
import lombok.extern.slf4j.Slf4j;
import org.hibernate.StaleObjectStateException;
import org.springframework.context.support.DefaultMessageSourceResolvable;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.HttpStatusCode;
import org.springframework.http.ResponseEntity;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.lang.NonNullApi;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.context.request.ServletWebRequest;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;

import static org.springframework.core.Ordered.HIGHEST_PRECEDENCE;

/**
* @author Igor Baiborodine
*/
@Slf4j
@Order(Ordered.HIGHEST_PRECEDENCE)
@Order(HIGHEST_PRECEDENCE)
@ControllerAdvice
public class ControllerExceptionHandler extends ResponseEntityExceptionHandler {

Expand Down Expand Up @@ -55,9 +58,8 @@ protected ResponseEntity<Object> handleBookingDatesNotAvailable(RuntimeException
}

@Override
protected ResponseEntity<Object> handleMethodArgumentNotValid(
MethodArgumentNotValidException ex, HttpHeaders headers,
HttpStatus status, WebRequest request) {
public ResponseEntity<Object> handleMethodArgumentNotValid(
MethodArgumentNotValidException ex, HttpHeaders headers, HttpStatusCode status, WebRequest request) {

var subErrors = ex.getBindingResult().getFieldErrors()
.stream()
Expand All @@ -80,8 +82,8 @@ protected ResponseEntity<Object> handleMethodArgumentNotValid(
}

@Override
protected ResponseEntity<Object> handleHttpMessageNotReadable(HttpMessageNotReadableException ex,
HttpHeaders headers, HttpStatus status, WebRequest request) {
public ResponseEntity<Object> handleHttpMessageNotReadable(
HttpMessageNotReadableException ex, HttpHeaders headers, HttpStatusCode status, WebRequest request) {
var servletWebRequest = (ServletWebRequest) request;
log.info("{} to {}", servletWebRequest.getHttpMethod(),
servletWebRequest.getRequest().getServletPath());
Expand All @@ -96,7 +98,7 @@ protected ResponseEntity<Object> handleHttpMessageNotReadable(HttpMessageNotRead
}

@ExceptionHandler(StaleObjectStateException.class)
protected ResponseEntity<Object> handleStaleObjectStateException(StaleObjectStateException ex) {
public ResponseEntity<Object> handleStaleObjectStateException(StaleObjectStateException ex) {

var apiError = ApiError.builder()
.timestamp(LocalDateTime.now())
Expand Down
27 changes: 14 additions & 13 deletions src/main/java/com/kiroule/campsite/booking/api/model/Booking.java
@@ -1,29 +1,30 @@
package com.kiroule.campsite.booking.api.model;

import static java.sql.Types.VARCHAR;
import static java.util.Objects.isNull;

import java.time.LocalDate;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Version;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import jakarta.persistence.Version;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Generated;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.JdbcTypeCode;

/**
* Entity domain object representing a booking.
Expand All @@ -36,7 +37,7 @@
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
@EqualsAndHashCode(onlyExplicitlyIncluded = true, callSuper = false)
@Generated
public class Booking extends DateAudit {

Expand All @@ -52,8 +53,8 @@ public class Booking extends DateAudit {
*/
@Getter
@EqualsAndHashCode.Include
@Type(type="uuid-char")
@Column(name = "uuid", nullable = false, unique = true)
@JdbcTypeCode(VARCHAR)
private UUID uuid;

@Version
Expand Down
@@ -1,11 +1,11 @@
package com.kiroule.campsite.booking.api.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
Expand All @@ -24,7 +24,7 @@
@AllArgsConstructor
@NoArgsConstructor
@Data
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
@EqualsAndHashCode(onlyExplicitlyIncluded = true, callSuper = false)
@Generated
public class Campsite extends DateAudit {

Expand Down
Expand Up @@ -2,9 +2,9 @@

import java.io.Serializable;
import java.time.LocalDateTime;
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 lombok.Data;
import lombok.Generated;
import org.springframework.data.annotation.CreatedDate;
Expand Down
Expand Up @@ -5,8 +5,8 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import javax.validation.Constraint;
import javax.validation.Payload;
import jakarta.validation.Constraint;
import jakarta.validation.Payload;

/**
* @author Igor Baiborodine
Expand Down
Expand Up @@ -2,8 +2,8 @@

import com.kiroule.campsite.booking.api.contract.v2.model.BookingDto;
import java.time.LocalDate;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;

public class BookingAllowedStartDateValidator
implements ConstraintValidator<BookingAllowedStartDate, BookingDto> {
Expand Down
Expand Up @@ -5,8 +5,8 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import javax.validation.Constraint;
import javax.validation.Payload;
import jakarta.validation.Constraint;
import jakarta.validation.Payload;

/**
* @author Igor Baiborodine
Expand Down
Expand Up @@ -2,8 +2,8 @@

import com.kiroule.campsite.booking.api.contract.v2.model.BookingDto;
import java.time.Period;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;

/**
* @author Igor Baiborodine
Expand Down
Expand Up @@ -5,8 +5,8 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import javax.validation.Constraint;
import javax.validation.Payload;
import jakarta.validation.Constraint;
import jakarta.validation.Payload;

/**
* @author Igor Baiborodine
Expand Down
@@ -1,8 +1,8 @@
package com.kiroule.campsite.booking.api.model.validator;

import com.kiroule.campsite.booking.api.contract.v2.model.BookingDto;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;

/**
* @author Igor Baiborodine
Expand Down
@@ -1,13 +1,13 @@
package com.kiroule.campsite.booking.api.repository;

import static javax.persistence.LockModeType.PESSIMISTIC_WRITE;
import static jakarta.persistence.LockModeType.PESSIMISTIC_WRITE;

import com.kiroule.campsite.booking.api.config.QueryProperties;
import com.kiroule.campsite.booking.api.model.Booking;
import com.kiroule.campsite.booking.api.repository.context.CustomRepositoryContext;
import java.time.LocalDate;
import java.util.List;
import javax.persistence.Query;
import jakarta.persistence.Query;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

Expand Down
@@ -1,6 +1,6 @@
package com.kiroule.campsite.booking.api.repository.context;

import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
Expand Down

0 comments on commit c558111

Please sign in to comment.