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