diff --git a/.gitignore b/.gitignore index a1c2a23..2afa6fa 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # Compiled class file *.class - +/.idea +*.iml # Log file *.log diff --git a/README.md b/README.md index 991b41a..4659c19 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,7 @@ spring-security-test Please find the Rest API documentation in the below url ``` -http://localhost:8989/bank-api/swagger-ui.html +http://localhost:8989/bank-api/swagger-ui/index.html ``` @@ -84,8 +84,14 @@ http://localhost:8989/bank-api/h2-console/ 2. Browse to /src/test/resources to find sample requests to add customer and accounts. +### Image Screen shot + +Swagger UI Page + +![Swagger UI Page](img/Swagger-UI.png "Swagger UI Page") ## Authors * **Shyam Bathina** + diff --git a/img/Swagger-UI.png b/img/Swagger-UI.png new file mode 100644 index 0000000..22611b7 Binary files /dev/null and b/img/Swagger-UI.png differ diff --git a/pom.xml b/pom.xml index 647e3ce..33d3618 100644 --- a/pom.xml +++ b/pom.xml @@ -5,17 +5,17 @@ org.springframework.boot spring-boot-starter-parent - 2.1.4.RELEASE + 3.2.5 com.coding.exercise bank-app 1.0.0 BankApp - Bank App Spring Boot Project + API for Banking Application. - 1.8 + 21 @@ -52,15 +52,22 @@ true - io.springfox - springfox-swagger2 - 2.9.2 + org.springdoc + springdoc-openapi-starter-webmvc-api + 2.5.0 - io.springfox - springfox-swagger-ui - 2.9.2 - + org.springdoc + springdoc-openapi-starter-webmvc-ui + 2.5.0 + + + + org.springdoc + springdoc-openapi-security + 1.8.0 + + org.springframework.boot spring-boot-starter-test diff --git a/src/main/java/com/coding/exercise/bankapp/config/ApplicationConfig.java b/src/main/java/com/coding/exercise/bankapp/config/ApplicationConfig.java index 67845f3..5061fe1 100644 --- a/src/main/java/com/coding/exercise/bankapp/config/ApplicationConfig.java +++ b/src/main/java/com/coding/exercise/bankapp/config/ApplicationConfig.java @@ -1,31 +1,43 @@ package com.coding.exercise.bankapp.config; +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; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import springfox.documentation.builders.ApiInfoBuilder; -import springfox.documentation.builders.PathSelectors; -import springfox.documentation.service.ApiInfo; -import springfox.documentation.spi.DocumentationType; -import springfox.documentation.spring.web.plugins.Docket; -import springfox.documentation.swagger2.annotations.EnableSwagger2; - @Configuration -@EnableSwagger2 public class ApplicationConfig { @Bean - public Docket api() { - return new Docket(DocumentationType.SWAGGER_2) - .apiInfo(apiInfo()) - .select() - .paths(PathSelectors.any()) + public GroupedOpenApi publicApi() { + return GroupedOpenApi.builder() + .group("bank-service") + .pathsToMatch("/**") .build(); } - - private ApiInfo apiInfo() { - return new ApiInfoBuilder().title("BANKING APPLICATION REST API") - .description("API for Banking Application.") - .version("1.0.0").build(); + + @Bean + public OpenAPI customOpenAPI(@Value("${application-description}") String appDescription, @Value("${application" + + "-version}") String appVersion) { + Contact contact = new Contact(); + contact.setEmail("hendisantika@yahoo.co.id"); + contact.setName("HENDI SANTIKA"); + contact.setUrl("https://www.s.id/hendisantika"); + return new OpenAPI() + .info(new Info() + .title("BANKING APPLICATION REST API") + .version(appVersion) + .description(appDescription) + .termsOfService("http://swagger.io/terms/") + .license(new License().name("Apache 2.0").url("http://springdoc.org")) + .contact(contact) + ); + } + + } diff --git a/src/main/java/com/coding/exercise/bankapp/config/SecurityConfig.java b/src/main/java/com/coding/exercise/bankapp/config/SecurityConfig.java index 1af7a3b..9d01fdd 100644 --- a/src/main/java/com/coding/exercise/bankapp/config/SecurityConfig.java +++ b/src/main/java/com/coding/exercise/bankapp/config/SecurityConfig.java @@ -1,8 +1,10 @@ package com.coding.exercise.bankapp.config; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; +import org.springframework.security.web.SecurityFilterChain; /** * @@ -13,14 +15,20 @@ * */ @Configuration -public class SecurityConfig extends WebSecurityConfigurerAdapter { +public class SecurityConfig { - @Override - protected void configure(HttpSecurity httpSecurity) throws Exception { - httpSecurity.authorizeRequests().antMatchers("/").permitAll().and() - .authorizeRequests().antMatchers("/h2-console/**").permitAll(); + @Bean + public SecurityFilterChain configure(HttpSecurity httpSecurity) throws Exception { + httpSecurity + .csrf(AbstractHttpConfigurer::disable) + .authorizeHttpRequests(authz -> authz + .requestMatchers("/swagger-ui", "/swagger-ui/**").permitAll() + .requestMatchers("/v3/api-docs", "/v3/api-docs/**").permitAll() + .requestMatchers("/").permitAll() + .requestMatchers("/h2-console/**").permitAll() + ) + .headers().frameOptions().disable(); + return httpSecurity.build(); - httpSecurity.csrf().disable(); - httpSecurity.headers().frameOptions().disable(); } } diff --git a/src/main/java/com/coding/exercise/bankapp/controller/AccountController.java b/src/main/java/com/coding/exercise/bankapp/controller/AccountController.java index b35f625..c2986f8 100644 --- a/src/main/java/com/coding/exercise/bankapp/controller/AccountController.java +++ b/src/main/java/com/coding/exercise/bankapp/controller/AccountController.java @@ -1,7 +1,13 @@ package com.coding.exercise.bankapp.controller; -import java.util.List; - +import com.coding.exercise.bankapp.domain.AccountInformation; +import com.coding.exercise.bankapp.domain.TransactionDetails; +import com.coding.exercise.bankapp.domain.TransferDetails; +import com.coding.exercise.bankapp.service.BankingServiceImpl; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; @@ -12,29 +18,21 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.coding.exercise.bankapp.domain.AccountInformation; -import com.coding.exercise.bankapp.domain.TransactionDetails; -import com.coding.exercise.bankapp.domain.TransferDetails; -import com.coding.exercise.bankapp.service.BankingServiceImpl; - -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiResponse; -import io.swagger.annotations.ApiResponses; +import java.util.List; @RestController @RequestMapping("accounts") -@Api(tags = { "Accounts and Transactions REST endpoints" }) +@Tag(name = "Account", description = "Accounts and Transactions REST endpoints") public class AccountController { @Autowired private BankingServiceImpl bankingService; @GetMapping(path = "/{accountNumber}") - @ApiOperation(value = "Get account details", notes = "Find account details by account number") - @ApiResponses(value = { @ApiResponse(code = 200, message = "Success"), - @ApiResponse(code = 400, message = "Bad Request"), - @ApiResponse(code = 500, message = "Internal Server Error") }) + @Operation(summary = "Get account details", description = "Find account details by account number") + @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "Success"), + @ApiResponse(responseCode = "400", description = "Bad Request"), + @ApiResponse(responseCode = "500", description = "Internal Server Error")}) public ResponseEntity getByAccountNumber(@PathVariable Long accountNumber) { @@ -42,10 +40,10 @@ public ResponseEntity getByAccountNumber(@PathVariable Long accountNumbe } @PostMapping(path = "/add/{customerNumber}") - @ApiOperation(value = "Add a new account", notes = "Create an new account for existing customer.") - @ApiResponses(value = { @ApiResponse(code = 200, message = "Success"), - @ApiResponse(code = 400, message = "Bad Request"), - @ApiResponse(code = 500, message = "Internal Server Error") }) + @Operation(summary = "Add a new account", description = "Create an new account for existing customer.") + @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "Success"), + @ApiResponse(responseCode = "400", description = "Bad Request"), + @ApiResponse(responseCode = "500", description = "Internal Server Error")}) public ResponseEntity addNewAccount(@RequestBody AccountInformation accountInformation, @PathVariable Long customerNumber) { @@ -54,10 +52,10 @@ public ResponseEntity addNewAccount(@RequestBody AccountInformation acco } @PutMapping(path = "/transfer/{customerNumber}") - @ApiOperation(value = "Transfer funds between accounts", notes = "Transfer funds between accounts.") - @ApiResponses(value = { @ApiResponse(code = 200, message = "Success", response = Object.class), - @ApiResponse(code = 400, message = "Bad Request"), - @ApiResponse(code = 500, message = "Internal Server Error") }) + @Operation(summary = "Transfer funds between accounts", description = "Transfer funds between accounts.") + @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "Success"), + @ApiResponse(responseCode = "400", description = "Bad Request"), + @ApiResponse(responseCode = "500", description = "Internal Server Error")}) public ResponseEntity transferDetails(@RequestBody TransferDetails transferDetails, @PathVariable Long customerNumber) { @@ -66,10 +64,10 @@ public ResponseEntity transferDetails(@RequestBody TransferDetails trans } @GetMapping(path = "/transactions/{accountNumber}") - @ApiOperation(value = "Get all transactions", notes = "Get all Transactions by account number") - @ApiResponses(value = { @ApiResponse(code = 200, message = "Success"), - @ApiResponse(code = 400, message = "Bad Request"), - @ApiResponse(code = 500, message = "Internal Server Error") }) + @Operation(summary = "Get all transactions", description = "Get all Transactions by account number") + @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "Success"), + @ApiResponse(responseCode = "400", description = "Bad Request"), + @ApiResponse(responseCode = "500", description = "Internal Server Error")}) public List getTransactionByAccountNumber(@PathVariable Long accountNumber) { diff --git a/src/main/java/com/coding/exercise/bankapp/controller/CustomerController.java b/src/main/java/com/coding/exercise/bankapp/controller/CustomerController.java index 58e9044..26d8502 100644 --- a/src/main/java/com/coding/exercise/bankapp/controller/CustomerController.java +++ b/src/main/java/com/coding/exercise/bankapp/controller/CustomerController.java @@ -1,7 +1,11 @@ package com.coding.exercise.bankapp.controller; -import java.util.List; - +import com.coding.exercise.bankapp.domain.CustomerDetails; +import com.coding.exercise.bankapp.service.BankingServiceImpl; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.DeleteMapping; @@ -13,27 +17,21 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.coding.exercise.bankapp.domain.CustomerDetails; -import com.coding.exercise.bankapp.service.BankingServiceImpl; - -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiResponse; -import io.swagger.annotations.ApiResponses; +import java.util.List; @RestController @RequestMapping("customers") -@Api(tags = { "Customer REST endpoints" }) +@Tag(name = "Customer", description = "Customer REST endpoints") public class CustomerController { @Autowired private BankingServiceImpl bankingService; @GetMapping(path = "/all") - @ApiOperation(value = "Find all customers", notes = "Gets details of all the customers") - @ApiResponses(value = { @ApiResponse(code = 200, message = "Success"), - @ApiResponse(code = 400, message = "Bad Request"), - @ApiResponse(code = 500, message = "Internal Server Error") }) + @Operation(summary = "Find all customers", description = "Gets details of all the customers") + @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "Success"), + @ApiResponse(responseCode = "400", description = "Bad Request"), + @ApiResponse(responseCode = "500", description = "Internal Server Error")}) public List getAllCustomers() { @@ -41,10 +39,10 @@ public List getAllCustomers() { } @PostMapping(path = "/add") - @ApiOperation(value = "Add a Customer", notes = "Add customer and create an account") - @ApiResponses(value = { @ApiResponse(code = 200, message = "Success"), - @ApiResponse(code = 400, message = "Bad Request"), - @ApiResponse(code = 500, message = "Internal Server Error") }) + @Operation(summary = "Add a Customer", description = "Add customer and create an account") + @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "Success"), + @ApiResponse(responseCode = "400", description = "Bad Request"), + @ApiResponse(responseCode = "500", description = "Internal Server Error")}) public ResponseEntity addCustomer(@RequestBody CustomerDetails customer) { @@ -52,11 +50,11 @@ public ResponseEntity addCustomer(@RequestBody CustomerDetails customer) } @GetMapping(path = "/{customerNumber}") - @ApiOperation(value = "Get customer details", notes = "Get Customer details by customer number.") + @Operation(summary = "Get customer details", description = "Get Customer details by customer number.") @ApiResponses(value = { - @ApiResponse(code = 200, message = "Success", response = CustomerDetails.class, responseContainer = "Object"), - @ApiResponse(code = 400, message = "Bad Request"), - @ApiResponse(code = 500, message = "Internal Server Error") }) + @ApiResponse(responseCode = "200", description = "Success"), + @ApiResponse(responseCode = "400", description = "Bad Request"), + @ApiResponse(responseCode = "500", description = "Internal Server Error")}) public CustomerDetails getCustomer(@PathVariable Long customerNumber) { @@ -64,10 +62,10 @@ public CustomerDetails getCustomer(@PathVariable Long customerNumber) { } @PutMapping(path = "/{customerNumber}") - @ApiOperation(value = "Update customer", notes = "Update customer and any other account information associated with him.") - @ApiResponses(value = { @ApiResponse(code = 200, message = "Success", response = Object.class), - @ApiResponse(code = 400, message = "Bad Request"), - @ApiResponse(code = 500, message = "Internal Server Error") }) + @Operation(summary = "Update customer", description = "Update customer and any other account information associated with him.") + @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "Success"), + @ApiResponse(responseCode = "400", description = "Bad Request"), + @ApiResponse(responseCode = "500", description = "Internal Server Error")}) public ResponseEntity updateCustomer(@RequestBody CustomerDetails customerDetails, @PathVariable Long customerNumber) { @@ -76,10 +74,10 @@ public ResponseEntity updateCustomer(@RequestBody CustomerDetails custom } @DeleteMapping(path = "/{customerNumber}") - @ApiOperation(value = "Delete customer and related accounts", notes = "Delete customer and all accounts associated with him.") - @ApiResponses(value = { @ApiResponse(code = 200, message = "Success", response = Object.class), - @ApiResponse(code = 400, message = "Bad Request"), - @ApiResponse(code = 500, message = "Internal Server Error") }) + @Operation(summary = "Delete customer and related accounts", description = "Delete customer and all accounts associated with him.") + @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "Success"), + @ApiResponse(responseCode = "400", description = "Bad Request"), + @ApiResponse(responseCode = "500", description = "Internal Server Error")}) public ResponseEntity deleteCustomer(@PathVariable Long customerNumber) { diff --git a/src/main/java/com/coding/exercise/bankapp/model/Account.java b/src/main/java/com/coding/exercise/bankapp/model/Account.java index 9494ffe..b2b4559 100644 --- a/src/main/java/com/coding/exercise/bankapp/model/Account.java +++ b/src/main/java/com/coding/exercise/bankapp/model/Account.java @@ -1,23 +1,22 @@ package com.coding.exercise.bankapp.model; -import java.util.Date; -import java.util.UUID; - -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.OneToOne; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; - +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.OneToOne; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.Date; +import java.util.UUID; + @Entity @AllArgsConstructor @NoArgsConstructor @@ -26,13 +25,13 @@ public class Account { @Id - @GeneratedValue(strategy=GenerationType.AUTO) + @GeneratedValue(strategy = GenerationType.AUTO) @Column(name="ACCT_ID") private UUID id; private Long accountNumber; - - @OneToOne(cascade=CascadeType.ALL) + + @OneToOne(cascade = CascadeType.ALL) private BankInfo bankInformation; private String accountStatus; diff --git a/src/main/java/com/coding/exercise/bankapp/model/Address.java b/src/main/java/com/coding/exercise/bankapp/model/Address.java index 241a0df..9c08c79 100644 --- a/src/main/java/com/coding/exercise/bankapp/model/Address.java +++ b/src/main/java/com/coding/exercise/bankapp/model/Address.java @@ -1,18 +1,17 @@ package com.coding.exercise.bankapp.model; -import java.util.UUID; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; - +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.UUID; + @NoArgsConstructor @AllArgsConstructor @Data @@ -21,7 +20,7 @@ public class Address { @Id - @GeneratedValue(strategy=GenerationType.AUTO) + @GeneratedValue(strategy = GenerationType.AUTO) @Column(name="ADDR_ID") private UUID id; diff --git a/src/main/java/com/coding/exercise/bankapp/model/BankInfo.java b/src/main/java/com/coding/exercise/bankapp/model/BankInfo.java index 2e9955b..0ebcf69 100644 --- a/src/main/java/com/coding/exercise/bankapp/model/BankInfo.java +++ b/src/main/java/com/coding/exercise/bankapp/model/BankInfo.java @@ -1,20 +1,19 @@ package com.coding.exercise.bankapp.model; -import java.util.UUID; - -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.OneToOne; - +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.OneToOne; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.UUID; + @NoArgsConstructor @AllArgsConstructor @Data @@ -23,15 +22,15 @@ public class BankInfo { @Id - @GeneratedValue(strategy=GenerationType.AUTO) + @GeneratedValue(strategy = GenerationType.AUTO) @Column(name="BANK_ID") private UUID id; private String branchName; private Integer branchCode; - - @OneToOne(cascade=CascadeType.ALL) + + @OneToOne(cascade = CascadeType.ALL) private Address branchAddress; private Integer routingNumber; diff --git a/src/main/java/com/coding/exercise/bankapp/model/Contact.java b/src/main/java/com/coding/exercise/bankapp/model/Contact.java index c793bee..47a9a26 100644 --- a/src/main/java/com/coding/exercise/bankapp/model/Contact.java +++ b/src/main/java/com/coding/exercise/bankapp/model/Contact.java @@ -1,18 +1,17 @@ package com.coding.exercise.bankapp.model; -import java.util.UUID; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; - +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.UUID; + @AllArgsConstructor @NoArgsConstructor @Data @@ -21,7 +20,7 @@ public class Contact { @Id - @GeneratedValue(strategy=GenerationType.AUTO) + @GeneratedValue(strategy = GenerationType.AUTO) @Column(name="CONTACT_ID") private UUID id; diff --git a/src/main/java/com/coding/exercise/bankapp/model/Customer.java b/src/main/java/com/coding/exercise/bankapp/model/Customer.java index 5235a51..122b6f9 100644 --- a/src/main/java/com/coding/exercise/bankapp/model/Customer.java +++ b/src/main/java/com/coding/exercise/bankapp/model/Customer.java @@ -1,23 +1,22 @@ package com.coding.exercise.bankapp.model; -import java.util.Date; -import java.util.UUID; - -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.ManyToOne; -import javax.persistence.OneToOne; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; - +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.OneToOne; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.Date; +import java.util.UUID; + @Entity @Data @Builder @@ -39,8 +38,8 @@ public class Customer { private Long customerNumber; private String status; - - @ManyToOne(cascade=CascadeType.ALL) + + @ManyToOne(cascade = CascadeType.ALL) private Address customerAddress; @OneToOne(cascade=CascadeType.ALL) diff --git a/src/main/java/com/coding/exercise/bankapp/model/CustomerAccountXRef.java b/src/main/java/com/coding/exercise/bankapp/model/CustomerAccountXRef.java index 2c580ce..49b4d41 100644 --- a/src/main/java/com/coding/exercise/bankapp/model/CustomerAccountXRef.java +++ b/src/main/java/com/coding/exercise/bankapp/model/CustomerAccountXRef.java @@ -1,18 +1,17 @@ package com.coding.exercise.bankapp.model; -import java.util.UUID; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; - +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.UUID; + @Entity @AllArgsConstructor @NoArgsConstructor @@ -21,7 +20,7 @@ public class CustomerAccountXRef { @Id - @GeneratedValue(strategy=GenerationType.AUTO) + @GeneratedValue(strategy = GenerationType.AUTO) @Column(name="CUST_ACC_XREF_ID") private UUID id; diff --git a/src/main/java/com/coding/exercise/bankapp/model/Transaction.java b/src/main/java/com/coding/exercise/bankapp/model/Transaction.java index 7d7bcce..b645e4d 100644 --- a/src/main/java/com/coding/exercise/bankapp/model/Transaction.java +++ b/src/main/java/com/coding/exercise/bankapp/model/Transaction.java @@ -1,21 +1,20 @@ package com.coding.exercise.bankapp.model; -import java.util.Date; -import java.util.UUID; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; - +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.Date; +import java.util.UUID; + @Entity @Data @Builder @@ -24,7 +23,7 @@ public class Transaction { @Id - @GeneratedValue(strategy=GenerationType.AUTO) + @GeneratedValue(strategy = GenerationType.AUTO) @Column(name="TX_ID") private UUID id; diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index aa3d490..aa63b94 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -9,3 +9,13 @@ spring: h2: console: enabled: true + +application-description: '@project.description@' +application-version: '@project.version@' + +springdoc: + packagesToScan: com.coding.exercise.bankapp + swagger-ui: + path: /swagger-ui + api-docs: + path: /v3/api-docs diff --git a/src/test/java/com/coding/exercise/bankapp/BankingApplicationTests.java b/src/test/java/com/coding/exercise/bankapp/BankingApplicationTests.java index 803c91d..6b76be1 100644 --- a/src/test/java/com/coding/exercise/bankapp/BankingApplicationTests.java +++ b/src/test/java/com/coding/exercise/bankapp/BankingApplicationTests.java @@ -1,11 +1,8 @@ package com.coding.exercise.bankapp; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; -@RunWith(SpringRunner.class) @SpringBootTest public class BankingApplicationTests {