From 6bfadb2591cd1d17e040b2b829f15f6ef19db3fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ondrej=20Fu=CC=88hrer?= <10830505+ondrejfuhrer@users.noreply.github.com> Date: Fri, 12 Jun 2026 12:01:17 +0200 Subject: [PATCH 1/2] Enable -parameters compiler flag for reliable PathVariable binding Add the -parameters flag to all JavaCompile tasks so Spring can bind @PathVariable/@RequestParam by name across every compile path. Previously the flag was only applied implicitly by the Spring Boot Gradle plugin, so builds that bypassed it (non-delegated IDE builds, stale caches) failed to bind path variables at runtime. Co-Authored-By: Claude Opus 4.7 --- build.gradle | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/build.gradle b/build.gradle index 1e86a5d..0810152 100644 --- a/build.gradle +++ b/build.gradle @@ -41,6 +41,10 @@ dependencies { testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } +tasks.withType(JavaCompile).configureEach { + options.compilerArgs.add('-parameters') +} + test { useJUnitPlatform() } From bb5af45538e6be467960b013a188017672896a03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ondrej=20Fu=CC=88hrer?= <10830505+ondrejfuhrer@users.noreply.github.com> Date: Fri, 12 Jun 2026 12:18:24 +0200 Subject: [PATCH 2/2] Use explicit @PathVariable names instead of -parameters flag Specify the path variable name in each @PathVariable annotation so binding works regardless of whether the -parameters compiler flag is present. This is more defensive than pinning the flag in build.gradle, since it has no dependency on compiler configuration or build path. Revert the build.gradle change from the previous commit. Co-Authored-By: Claude Opus 4.7 --- build.gradle | 4 ---- .../interview/controller/ActivitiesController.java | 4 ++-- .../getourguide/interview/controller/SupplierController.java | 2 +- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/build.gradle b/build.gradle index 0810152..1e86a5d 100644 --- a/build.gradle +++ b/build.gradle @@ -41,10 +41,6 @@ dependencies { testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } -tasks.withType(JavaCompile).configureEach { - options.compilerArgs.add('-parameters') -} - test { useJUnitPlatform() } diff --git a/src/main/java/com/getourguide/interview/controller/ActivitiesController.java b/src/main/java/com/getourguide/interview/controller/ActivitiesController.java index 1e0d322..9d4c86c 100644 --- a/src/main/java/com/getourguide/interview/controller/ActivitiesController.java +++ b/src/main/java/com/getourguide/interview/controller/ActivitiesController.java @@ -21,12 +21,12 @@ public ResponseEntity> activities() { } @GetMapping("/activities/{id}") - public ResponseEntity activities(@PathVariable Long id) { + public ResponseEntity activities(@PathVariable("id") Long id) { return ResponseEntity.ok(activityService.getActivities(id)); } @GetMapping("/activities/search/{search}") - public ResponseEntity> activitiesSearch(@PathVariable String search) { + public ResponseEntity> activitiesSearch(@PathVariable("search") String search) { return ResponseEntity.ok(activityService.searchActivities(search)); } } diff --git a/src/main/java/com/getourguide/interview/controller/SupplierController.java b/src/main/java/com/getourguide/interview/controller/SupplierController.java index 7564a3e..a4cfdf1 100644 --- a/src/main/java/com/getourguide/interview/controller/SupplierController.java +++ b/src/main/java/com/getourguide/interview/controller/SupplierController.java @@ -22,7 +22,7 @@ public ResponseEntity> suppliers() { } @GetMapping("/suppliers/search/{search}") - public ResponseEntity> suppliersSearch(@PathVariable String search) { + public ResponseEntity> suppliersSearch(@PathVariable("search") String search) { var list = (List) entityManager.createNativeQuery("SELECT * FROM GETYOURGUIDE.SUPPLIER", Supplier.class).getResultList(); for(Supplier s: list) { if(new StringBuilder().append(s.getName()).append(s.getAddress()).append(s.getZip()).append(s.getCity()).append(s.getCountry()).toString().contains(search)) {