diff --git a/.github/workflows/backend.yml b/.github/workflows/backend.yml index a1aa305..ea73c07 100644 --- a/.github/workflows/backend.yml +++ b/.github/workflows/backend.yml @@ -23,6 +23,10 @@ jobs: java-version: "21" cache: "maven" + - name: Check code formatting + working-directory: ./apigateway + run: ./mvnw spotless:check + - name: Build with Maven working-directory: ./apigateway run: ./mvnw verify -DskipTests diff --git a/CODE_FORMATTING.md b/CODE_FORMATTING.md new file mode 100644 index 0000000..91dab36 --- /dev/null +++ b/CODE_FORMATTING.md @@ -0,0 +1,75 @@ +# Code Formatting Guide + +## Overview + +This project enforces consistent code formatting using **Spotless** with **Google Java Format**. All Java code must adhere to the Google Java Style Guide to maintain code quality and consistency across contributions. + +## Automated Formatting Checks + +### CI/CD Enforcement + +Every pull request automatically runs a formatting check in the CI pipeline. **Pull requests will fail if code is not properly formatted.** + +The CI workflow includes: +```bash +./mvnw spotless:check +``` + +This ensures that all merged code follows the established formatting standards. + +## Local Development + +### Check Formatting + +To check if your code is properly formatted: + +```bash +cd apigateway +./mvnw spotless:check +``` + +**On Windows:** +```powershell +cd apigateway +.\mvnw.cmd spotless:check +``` + +### Apply Formatting + +To automatically format all Java files: + +```bash +cd apigateway +./mvnw spotless:apply +``` + +**On Windows:** +```powershell +cd apigateway +.\mvnw.cmd spotless:apply +``` + +### Pre-commit Best Practice + +**Always run `mvnw spotless:apply` before committing your changes** to avoid CI failures. + +## What Gets Formatted + +The Spotless configuration formats: + +- ✅ All Java source files (`src/main/java/**/*.java`) +- ✅ All Java test files (`src/test/java/**/*.java`) + +### Formatting Rules Applied + +1. **Google Java Format** - Standard Google style formatting +2. **Import Organization** - Imports ordered as: `java`, `javax`, `org`, `com`, `vaultweb` +3. **Unused Import Removal** - Automatically removes unused imports +4. **Trailing Whitespace** - Removes trailing whitespace from lines +5. **End with Newline** - Ensures files end with a newline character + +## References + +- [Google Java Style Guide](https://google.github.io/styleguide/javaguide.html) +- [Spotless Maven Plugin](https://github.com/diffplug/spotless/tree/main/plugin-maven) +- [Google Java Format](https://github.com/google/google-java-format) \ No newline at end of file diff --git a/apigateway/pom.xml b/apigateway/pom.xml index fce6fca..d809c7f 100644 --- a/apigateway/pom.xml +++ b/apigateway/pom.xml @@ -124,6 +124,33 @@ + + com.diffplug.spotless + spotless-maven-plugin + 2.41.1 + + + + 1.22.0 + + + + + java,javax,org,com,vaultweb + + + + + + + + + check + + verify + + + diff --git a/apigateway/src/main/java/vaultweb/apigateway/ApiGatewayApplication.java b/apigateway/src/main/java/vaultweb/apigateway/ApiGatewayApplication.java index b90d7f4..526e8c1 100644 --- a/apigateway/src/main/java/vaultweb/apigateway/ApiGatewayApplication.java +++ b/apigateway/src/main/java/vaultweb/apigateway/ApiGatewayApplication.java @@ -6,8 +6,7 @@ @SpringBootApplication public class ApiGatewayApplication { - public static void main(String[] args) { - SpringApplication.run(ApiGatewayApplication.class, args); - } - + public static void main(String[] args) { + SpringApplication.run(ApiGatewayApplication.class, args); + } } diff --git a/apigateway/src/main/java/vaultweb/apigateway/config/GatewayAuthConfig.java b/apigateway/src/main/java/vaultweb/apigateway/config/GatewayAuthConfig.java index 1800e1b..e519ae3 100644 --- a/apigateway/src/main/java/vaultweb/apigateway/config/GatewayAuthConfig.java +++ b/apigateway/src/main/java/vaultweb/apigateway/config/GatewayAuthConfig.java @@ -1,4 +1,3 @@ package vaultweb.apigateway.config; -public class GatewayAuthConfig { -} +public class GatewayAuthConfig {} diff --git a/apigateway/src/main/java/vaultweb/apigateway/controller/GatewayAuthController.java b/apigateway/src/main/java/vaultweb/apigateway/controller/GatewayAuthController.java index 15a3e31..729af86 100644 --- a/apigateway/src/main/java/vaultweb/apigateway/controller/GatewayAuthController.java +++ b/apigateway/src/main/java/vaultweb/apigateway/controller/GatewayAuthController.java @@ -9,55 +9,53 @@ @RequestMapping("/auth") public class GatewayAuthController { - @GetMapping("/me") - public String getMyData(){ - return "My Data!"; - } - - @PostMapping("/login") - public String login(){ - return "login"; - } - - @PostMapping("/register") - public String register(){ - return "register"; - - } - - @PostMapping("/logout") - public String logout(){ - return "logout"; - } - - @PostMapping("change-username") - public String changeUsername(){ - return "changeUsername"; - } - - @PostMapping("change-email") - public String changeEmail(){ - return "changeEmail"; - } - - @PostMapping("change-password") - public String changePassword(){ - return "changePassword"; - } - - @PostMapping("/switch-jwt") - public String switchJwtToken(){ - return "switchJwtToken"; - } - - @PostMapping("/reset-password") - public String resetPassword(){ - return "resetPassword"; - } - - @PostMapping("/verify-email") - public String verifyEmail(){ - return "verifyEmail"; - } - + @GetMapping("/me") + public String getMyData() { + return "My Data!"; + } + + @PostMapping("/login") + public String login() { + return "login"; + } + + @PostMapping("/register") + public String register() { + return "register"; + } + + @PostMapping("/logout") + public String logout() { + return "logout"; + } + + @PostMapping("change-username") + public String changeUsername() { + return "changeUsername"; + } + + @PostMapping("change-email") + public String changeEmail() { + return "changeEmail"; + } + + @PostMapping("change-password") + public String changePassword() { + return "changePassword"; + } + + @PostMapping("/switch-jwt") + public String switchJwtToken() { + return "switchJwtToken"; + } + + @PostMapping("/reset-password") + public String resetPassword() { + return "resetPassword"; + } + + @PostMapping("/verify-email") + public String verifyEmail() { + return "verifyEmail"; + } } diff --git a/apigateway/src/main/java/vaultweb/apigateway/controller/GatewayCloudController.java b/apigateway/src/main/java/vaultweb/apigateway/controller/GatewayCloudController.java index d3b278a..b8e925b 100644 --- a/apigateway/src/main/java/vaultweb/apigateway/controller/GatewayCloudController.java +++ b/apigateway/src/main/java/vaultweb/apigateway/controller/GatewayCloudController.java @@ -1,4 +1,3 @@ package vaultweb.apigateway.controller; -public class GatewayCloudController { -} +public class GatewayCloudController {} diff --git a/apigateway/src/main/java/vaultweb/apigateway/controller/GatewayPasswordManagerController.java b/apigateway/src/main/java/vaultweb/apigateway/controller/GatewayPasswordManagerController.java index abc8aa4..7403747 100644 --- a/apigateway/src/main/java/vaultweb/apigateway/controller/GatewayPasswordManagerController.java +++ b/apigateway/src/main/java/vaultweb/apigateway/controller/GatewayPasswordManagerController.java @@ -1,4 +1,3 @@ package vaultweb.apigateway.controller; -public class GatewayPasswordManagerController { -} +public class GatewayPasswordManagerController {} diff --git a/apigateway/src/main/java/vaultweb/apigateway/exceptions/GlobalExceptionHandler.java b/apigateway/src/main/java/vaultweb/apigateway/exceptions/GlobalExceptionHandler.java index b0c4e0a..6475d8e 100644 --- a/apigateway/src/main/java/vaultweb/apigateway/exceptions/GlobalExceptionHandler.java +++ b/apigateway/src/main/java/vaultweb/apigateway/exceptions/GlobalExceptionHandler.java @@ -1,4 +1,3 @@ package vaultweb.apigateway.exceptions; -public class GlobalExceptionHandler { -} +public class GlobalExceptionHandler {} diff --git a/apigateway/src/main/java/vaultweb/apigateway/model/User.java b/apigateway/src/main/java/vaultweb/apigateway/model/User.java index 561c187..6976eb9 100644 --- a/apigateway/src/main/java/vaultweb/apigateway/model/User.java +++ b/apigateway/src/main/java/vaultweb/apigateway/model/User.java @@ -1,9 +1,9 @@ package vaultweb.apigateway.model; import jakarta.persistence.Entity; -import jakarta.persistence.Id; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -13,11 +13,11 @@ @AllArgsConstructor @NoArgsConstructor public class User { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private int id; - private String name; - private String email; - private String password; + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private int id; -} \ No newline at end of file + private String name; + private String email; + private String password; +} diff --git a/apigateway/src/main/java/vaultweb/apigateway/service/AuthService.java b/apigateway/src/main/java/vaultweb/apigateway/service/AuthService.java index 5970600..d679f5b 100644 --- a/apigateway/src/main/java/vaultweb/apigateway/service/AuthService.java +++ b/apigateway/src/main/java/vaultweb/apigateway/service/AuthService.java @@ -1,4 +1,3 @@ package vaultweb.apigateway.service; -public class AuthService { -} +public class AuthService {} diff --git a/apigateway/src/main/java/vaultweb/apigateway/service/RoutingService.java b/apigateway/src/main/java/vaultweb/apigateway/service/RoutingService.java index 8352ef6..20652ef 100644 --- a/apigateway/src/main/java/vaultweb/apigateway/service/RoutingService.java +++ b/apigateway/src/main/java/vaultweb/apigateway/service/RoutingService.java @@ -1,4 +1,3 @@ package vaultweb.apigateway.service; -public class RoutingService { -} +public class RoutingService {} diff --git a/apigateway/src/main/java/vaultweb/apigateway/util/BcryptUtil.java b/apigateway/src/main/java/vaultweb/apigateway/util/BcryptUtil.java index 081daed..f13b6b1 100644 --- a/apigateway/src/main/java/vaultweb/apigateway/util/BcryptUtil.java +++ b/apigateway/src/main/java/vaultweb/apigateway/util/BcryptUtil.java @@ -1,30 +1,33 @@ package vaultweb.apigateway.util; -import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; - import static org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder.BCryptVersion.$2B; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; + public class BcryptUtil { - private static final int BCRYPT_ROUNDS = 12; - private static final BCryptPasswordEncoder.BCryptVersion BCRYPT_VERSION = $2B; - private static final BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(BCRYPT_VERSION, BCRYPT_ROUNDS); + private static final int BCRYPT_ROUNDS = 12; + private static final BCryptPasswordEncoder.BCryptVersion BCRYPT_VERSION = $2B; + private static final BCryptPasswordEncoder encoder = + new BCryptPasswordEncoder(BCRYPT_VERSION, BCRYPT_ROUNDS); - /** - * Encodes the password using the bcrypt algorithm. - * @param password to be encoded - * @return hashed version of the password - */ - public String encode(final String password) { - return encoder.encode(password); - } + /** + * Encodes the password using the bcrypt algorithm. + * + * @param password to be encoded + * @return hashed version of the password + */ + public String encode(final String password) { + return encoder.encode(password); + } - /** - * Checks if two passwords are equivalent. - * @param password that is unencrypted - * @param hashedPassword from database - * @return true if the passwords are the same - */ - public boolean matches(final String password, final String hashedPassword) { - return encoder.matches(password, hashedPassword); - } + /** + * Checks if two passwords are equivalent. + * + * @param password that is unencrypted + * @param hashedPassword from database + * @return true if the passwords are the same + */ + public boolean matches(final String password, final String hashedPassword) { + return encoder.matches(password, hashedPassword); + } } diff --git a/apigateway/src/main/java/vaultweb/apigateway/util/JwtUtil.java b/apigateway/src/main/java/vaultweb/apigateway/util/JwtUtil.java index d69631c..380a43a 100644 --- a/apigateway/src/main/java/vaultweb/apigateway/util/JwtUtil.java +++ b/apigateway/src/main/java/vaultweb/apigateway/util/JwtUtil.java @@ -1,4 +1,3 @@ package vaultweb.apigateway.util; -public class JwtUtil { -} +public class JwtUtil {} diff --git a/apigateway/src/test/java/vaultweb/apigateway/ApigatewayApplicationTests.java b/apigateway/src/test/java/vaultweb/apigateway/ApigatewayApplicationTests.java index 637089e..426e47b 100644 --- a/apigateway/src/test/java/vaultweb/apigateway/ApigatewayApplicationTests.java +++ b/apigateway/src/test/java/vaultweb/apigateway/ApigatewayApplicationTests.java @@ -6,9 +6,6 @@ @SpringBootTest class ApigatewayApplicationTests { - @Test - void contextLoads() { - - } - + @Test + void contextLoads() {} }