diff --git a/pom.xml b/pom.xml index fca1f26..8701354 100644 --- a/pom.xml +++ b/pom.xml @@ -15,26 +15,34 @@ org.springframework.boot spring-boot-starter-parent - 2.0.3.RELEASE - + 3.3.2 + UTF-8 UTF-8 - 1.8 + 17 + 17 + 17 + 17 org.springframework.boot spring-boot-starter-data-jpa + + + org.hibernate + hibernate-entitymanager + + org.springframework.boot spring-boot-starter-web - com.h2database h2 @@ -51,15 +59,14 @@ test - io.springfox - springfox-swagger2 - 2.7.0 + org.springdoc + springdoc-openapi-starter-webmvc-ui + 2.6.0 compile - io.springfox - springfox-swagger-ui - 2.7.0 + jakarta.persistence + jakarta.persistence-api diff --git a/src/main/java/com/dxbair/services/flightbooking/Application.java b/src/main/java/com/dxbair/services/flightbooking/Application.java index 68f3dcf..4c737f7 100644 --- a/src/main/java/com/dxbair/services/flightbooking/Application.java +++ b/src/main/java/com/dxbair/services/flightbooking/Application.java @@ -5,8 +5,7 @@ import org.springframework.context.annotation.ComponentScan; import org.springframework.transaction.annotation.EnableTransactionManagement; -@SpringBootApplication -@ComponentScan(basePackages = { "com.dxbair.services.flightbooking" }) +@SpringBootApplication(scanBasePackages = { "com.dxbair.services.flightbooking" }) @EnableTransactionManagement public class Application { diff --git a/src/main/java/com/dxbair/services/flightbooking/JpaConfig.java b/src/main/java/com/dxbair/services/flightbooking/JpaConfig.java index cdc635f..3589082 100644 --- a/src/main/java/com/dxbair/services/flightbooking/JpaConfig.java +++ b/src/main/java/com/dxbair/services/flightbooking/JpaConfig.java @@ -4,8 +4,15 @@ import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.transaction.annotation.EnableTransactionManagement; +/** + * Configuration class for JPA settings. + * Enables transaction management and JPA repositories. + */ @Configuration @EnableTransactionManagement -@EnableJpaRepositories(basePackages = {"com.dxbair.services.flightbooking.domain.repo"}) +@EnableJpaRepositories( + basePackages = "com.dxbair.services.flightbooking.domain.repo" +) public class JpaConfig { + } diff --git a/src/main/java/com/dxbair/services/flightbooking/SwaggerConfig.java b/src/main/java/com/dxbair/services/flightbooking/SwaggerConfig.java index bb9bd4f..cc6ebaa 100644 --- a/src/main/java/com/dxbair/services/flightbooking/SwaggerConfig.java +++ b/src/main/java/com/dxbair/services/flightbooking/SwaggerConfig.java @@ -5,34 +5,33 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import springfox.documentation.builders.PathSelectors; -import springfox.documentation.builders.RequestHandlerSelectors; -import springfox.documentation.service.ApiInfo; -import springfox.documentation.service.Contact; -import springfox.documentation.spi.DocumentationType; -import springfox.documentation.spring.web.plugins.Docket; -import springfox.documentation.swagger2.annotations.EnableSwagger2; +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Contact; +import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.info.License; +import org.springdoc.core.models.GroupedOpenApi; + @Configuration -@EnableSwagger2 public class SwaggerConfig { @Bean - public Docket bookingApi() { - return new Docket(DocumentationType.SWAGGER_2) - .select() - .apis(RequestHandlerSelectors.basePackage("com.dxbair.services.flightbooking")) - .paths(PathSelectors.ant("/**")) - .build().apiInfo(apiInfo()); + public GroupedOpenApi bookingApi() { + String paths[] = {"/**"}; + return GroupedOpenApi.builder() + .group("flight-booking") + .pathsToMatch(paths) + .build(); } - - private ApiInfo apiInfo() { - return new ApiInfo( - "Flight Booking REST API", - "Flight Booking REST API Documentatoion", - "API TOS", - "Terms of service", - new Contact("Shameer Kunjumohamed", "www.sameerean.com", "sameerean@gmail.com"), - "License of API", "API license URL", Collections.emptyList()); - } + + @Bean + public OpenAPI apiInfo() { + return new OpenAPI() + .info(new Info().title("Flight Booking REST API") + .description("Flight Booking REST API Documentation") + .version("v0.0.1") + .license(new License().name("API License").url("https://www.example.com/license")) + .contact(new Contact().name("Shameer Kunjumohamed").email("sameerean@gmail.com").url("https://www.sameerean.com"))); + } + } diff --git a/src/main/java/com/dxbair/services/flightbooking/airport/AirportController.java b/src/main/java/com/dxbair/services/flightbooking/airport/AirportController.java index e3c903d..a99e733 100644 --- a/src/main/java/com/dxbair/services/flightbooking/airport/AirportController.java +++ b/src/main/java/com/dxbair/services/flightbooking/airport/AirportController.java @@ -1,27 +1,18 @@ package com.dxbair.services.flightbooking.airport; -import java.util.List; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import com.dxbair.services.flightbooking.domain.entity.Airport; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; -import com.dxbair.services.flightbooking.booking.model.FlightBookingModel; -import com.dxbair.services.flightbooking.domain.entity.Airport; -import com.dxbair.services.flightbooking.domain.repo.AirportRepository; +import java.util.List; @RestController @RequestMapping("airports") public class AirportController { - - @Autowired - private AirportService airportService; - + + @Autowired + private AirportService airportService; + // private static final Logger logger = LoggerFactory.getLogger(AirportController.class); @GetMapping diff --git a/src/main/java/com/dxbair/services/flightbooking/domain/entity/Airport.java b/src/main/java/com/dxbair/services/flightbooking/domain/entity/Airport.java index ca5e488..9c89229 100644 --- a/src/main/java/com/dxbair/services/flightbooking/domain/entity/Airport.java +++ b/src/main/java/com/dxbair/services/flightbooking/domain/entity/Airport.java @@ -1,7 +1,7 @@ package com.dxbair.services.flightbooking.domain.entity; -import javax.persistence.Entity; -import javax.persistence.Id; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; @Entity public class Airport { diff --git a/src/main/java/com/dxbair/services/flightbooking/domain/entity/Flight.java b/src/main/java/com/dxbair/services/flightbooking/domain/entity/Flight.java index 105063b..3bf0fca 100644 --- a/src/main/java/com/dxbair/services/flightbooking/domain/entity/Flight.java +++ b/src/main/java/com/dxbair/services/flightbooking/domain/entity/Flight.java @@ -3,11 +3,11 @@ import java.time.LocalDateTime; import java.util.Set; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.ManyToMany; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import jakarta.persistence.ManyToMany; import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; @@ -19,15 +19,18 @@ public class Flight { @Id @GeneratedValue(generator = "flight-id-gen") - @GenericGenerator(name = "flight-id-gen", - parameters = @Parameter(name = "prefix", value = "FL"), - strategy = "com.dxbair.services.flightbooking.domain.util.StringSequenceIdGenerator") + @GenericGenerator( + name = "flight-id-gen", + parameters = @Parameter(name = "prefix", value = "FL"), + strategy = "com.dxbair.services.flightbooking.domain.util.StringSequenceIdGenerator" + ) private String id; + private String departure; private String arrival; private LocalDateTime departureDate; private LocalDateTime arrivalDate; - + @ManyToMany(mappedBy = "flights", fetch = FetchType.LAZY) private Set bookings; @@ -95,8 +98,9 @@ public void setBookings(Set bookings) { @Override public String toString() { - return "Flight [id=" + id + ", departure=" + departure + ", arrival=" + arrival + ", departureDate=" - + departureDate + ", arrivalDate=" + arrivalDate + "]"; + return """ + Flight [id=%s, departure=%s, arrival=%s, departureDate=%s, arrivalDate=%s] + """.formatted(id, departure, arrival, departureDate, arrivalDate); } } diff --git a/src/main/java/com/dxbair/services/flightbooking/domain/entity/FlightBooking.java b/src/main/java/com/dxbair/services/flightbooking/domain/entity/FlightBooking.java index 89f004d..1e2af1d 100644 --- a/src/main/java/com/dxbair/services/flightbooking/domain/entity/FlightBooking.java +++ b/src/main/java/com/dxbair/services/flightbooking/domain/entity/FlightBooking.java @@ -2,15 +2,15 @@ import java.util.Set; -import javax.persistence.CascadeType; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.JoinTable; -import javax.persistence.ManyToMany; -import javax.persistence.ManyToOne; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.JoinTable; +import jakarta.persistence.ManyToMany; +import jakarta.persistence.ManyToOne; import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; diff --git a/src/main/java/com/dxbair/services/flightbooking/domain/entity/Passenger.java b/src/main/java/com/dxbair/services/flightbooking/domain/entity/Passenger.java index f4ef48f..ed59fe8 100644 --- a/src/main/java/com/dxbair/services/flightbooking/domain/entity/Passenger.java +++ b/src/main/java/com/dxbair/services/flightbooking/domain/entity/Passenger.java @@ -1,11 +1,11 @@ package com.dxbair.services.flightbooking.domain.entity; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.UniqueConstraint; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import jakarta.persistence.UniqueConstraint; import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; diff --git a/src/main/java/com/dxbair/services/flightbooking/domain/util/StringSequenceIdGenerator.java b/src/main/java/com/dxbair/services/flightbooking/domain/util/StringSequenceIdGenerator.java index b49ff70..24a9ef6 100644 --- a/src/main/java/com/dxbair/services/flightbooking/domain/util/StringSequenceIdGenerator.java +++ b/src/main/java/com/dxbair/services/flightbooking/domain/util/StringSequenceIdGenerator.java @@ -20,10 +20,10 @@ public Serializable generate( SharedSessionContractImplementor session, Object obj) throws HibernateException { - String query = String.format("select %s from %s", - session.getEntityPersister(obj.getClass().getName(), obj) - .getIdentifierPropertyName(), - obj.getClass().getSimpleName()); + String query = "select %s from %s".formatted( + session.getEntityPersister(obj.getClass().getName(), obj) + .getIdentifierPropertyName(), + obj.getClass().getSimpleName()); Stream ids = session.createQuery(query).stream(); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 24f4f9f..ce21b5c 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -5,7 +5,7 @@ # Database Settings ### spring.datasource.url=jdbc:h2:mem:flight-booking;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE -spring.datasource.platform=h2 +spring.sql.init.platform=h2 spring.datasource.username = sa spring.datasource.password = spring.datasource.driverClassName = org.h2.Driver diff --git a/src/main/resources/application2.properties b/src/main/resources/application2.properties index a4c66da..0c88309 100644 --- a/src/main/resources/application2.properties +++ b/src/main/resources/application2.properties @@ -18,7 +18,7 @@ # Database Settings ### spring.datasource.url=jdbc:h2:mem:flight-booking;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE -spring.datasource.platform=h2 +spring.sql.init.platform=h2 spring.datasource.username = sa spring.datasource.password = spring.datasource.driverClassName = org.h2.Driver