From f2bd6ca3fb81ead58d3bdb3722f4c1d9f0690afb Mon Sep 17 00:00:00 2001 From: David Alvarez Date: Mon, 25 May 2026 09:40:50 +0200 Subject: [PATCH] Fix Path name collision: use full @jakarta.ws.rs.Path for annotation, specific imports to avoid conflict with java.nio.file.Path --- src/main/java/com/dostalgia/SockdriveResource.java | 11 +++++++---- src/main/java/com/dostalgia/StaticResource.java | 11 ++++++----- src/main/java/com/dostalgia/UploadResource.java | 9 ++++++--- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/dostalgia/SockdriveResource.java b/src/main/java/com/dostalgia/SockdriveResource.java index 430f943..96095db 100644 --- a/src/main/java/com/dostalgia/SockdriveResource.java +++ b/src/main/java/com/dostalgia/SockdriveResource.java @@ -1,7 +1,10 @@ package com.dostalgia; import jakarta.inject.Inject; -import jakarta.ws.rs.*; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.QueryParam; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.StreamingOutput; @@ -10,7 +13,7 @@ import java.nio.file.*; import java.util.*; /** Serves game files for sockdrive streaming mode. */ -@Path("/api/sockdrive") +@jakarta.ws.rs.Path("/api/sockdrive") @Produces(MediaType.APPLICATION_JSON) public class SockdriveResource { @@ -18,7 +21,7 @@ public class SockdriveResource { GameService svc; @GET - @Path("/{slug}/files") + @jakarta.ws.rs.Path("/{slug}/files") public Response listFiles(@PathParam("slug") String slug) { Path gameDir = svc.gameDir(slug); if (!Files.isDirectory(gameDir)) { @@ -40,7 +43,7 @@ public class SockdriveResource { } @GET - @Path("/{slug}/file") + @jakarta.ws.rs.Path("/{slug}/file") public Response getFile( @PathParam("slug") String slug, @QueryParam("path") String path diff --git a/src/main/java/com/dostalgia/StaticResource.java b/src/main/java/com/dostalgia/StaticResource.java index faf9736..7944b47 100644 --- a/src/main/java/com/dostalgia/StaticResource.java +++ b/src/main/java/com/dostalgia/StaticResource.java @@ -1,7 +1,8 @@ package com.dostalgia; import jakarta.inject.Inject; -import jakarta.ws.rs.*; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.PathParam; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.StreamingOutput; @@ -12,14 +13,14 @@ import java.nio.file.*; import java.util.Map; /** Serves game bundles (.jsdos) and artwork from the external data directory. */ -@Path("/") +@jakarta.ws.rs.Path("/") public class StaticResource { @ConfigProperty(name = "dostalgia.data.dir", defaultValue = "data") String dataDir; @GET - @Path("/games/{path: .*}") + @jakarta.ws.rs.Path("/games/{path: .*}") public Response getGameFile(@PathParam("path") String path) { Path file = Path.of(dataDir, "games", path).normalize(); Path base = Path.of(dataDir, "games").normalize(); @@ -38,7 +39,7 @@ public class StaticResource { } @GET - @Path("/artwork/{path: .*}") + @jakarta.ws.rs.Path("/artwork/{path: .*}") public Response getArtwork(@PathParam("path") String path) { Path file = Path.of(dataDir, "artwork", path).normalize(); Path base = Path.of(dataDir, "artwork").normalize(); @@ -58,7 +59,7 @@ public class StaticResource { /** Health check */ @GET - @Path("/api/health") + @jakarta.ws.rs.Path("/api/health") public Response health() { return Response.ok(Map.of("status", "ok", "version", "0.1.0")).build(); } diff --git a/src/main/java/com/dostalgia/UploadResource.java b/src/main/java/com/dostalgia/UploadResource.java index 3674ec1..8f9d8e6 100644 --- a/src/main/java/com/dostalgia/UploadResource.java +++ b/src/main/java/com/dostalgia/UploadResource.java @@ -1,7 +1,10 @@ package com.dostalgia; import jakarta.inject.Inject; -import jakarta.ws.rs.*; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; import org.jboss.resteasy.reactive.RestForm; @@ -12,7 +15,7 @@ import java.nio.file.*; import java.nio.file.attribute.BasicFileAttributes; import java.util.*; -@Path("/api/upload") +@jakarta.ws.rs.Path("/api/upload") @Produces(MediaType.APPLICATION_JSON) public class UploadResource { @@ -103,7 +106,7 @@ public class UploadResource { } @POST - @Path("/{id}/cover") + @jakarta.ws.rs.Path("/{id}/cover") @Consumes(MediaType.MULTIPART_FORM_DATA) public Response uploadCover(@PathParam("id") String id, @RestForm("file") FileUpload upload) throws Exception { if (upload == null) {