From be24b68923fd722937cf728a2cf8b78829fb872b Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Santos Souza de Miranda Date: Tue, 9 Dec 2025 19:21:04 -0300 Subject: [PATCH] Add ID validation to GetTrackHasGenreByIdHandler MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add validation to reject ID values <= 0 in GetTrackHasGenreByIdHandler before calling the service layer. This prevents the protobuf default value of 0 from being processed, which would incorrectly pass the null check in the service but represents an invalid ID. Changes: - Extract ID from GetTrackHasGenreByIdRequest and validate id <= 0 - Throw IllegalArgumentException with message "ID must be greater than 0" if validation fails - Add specific catch block for IllegalArgumentException that returns HTTP 400 status code with "Validation error: " prefix - Mirrors validation pattern from CreateTrackHasGenreHandler This aligns with validation patterns used in similar handlers throughout the codebase (GetTrackHasArtistByIdHandler, GetTrackHasComposerByIdHandler) and ensures consistent error handling for invalid ID inputs. Modified: - src/main/java/com/mediamanager/service/delegate/handler/trackhasgenre/GetTrackHasGenreByIdHandler.java 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- .../trackhasgenre/GetTrackHasGenreByIdHandler.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/com/mediamanager/service/delegate/handler/trackhasgenre/GetTrackHasGenreByIdHandler.java b/src/main/java/com/mediamanager/service/delegate/handler/trackhasgenre/GetTrackHasGenreByIdHandler.java index bca167d..caf5441 100644 --- a/src/main/java/com/mediamanager/service/delegate/handler/trackhasgenre/GetTrackHasGenreByIdHandler.java +++ b/src/main/java/com/mediamanager/service/delegate/handler/trackhasgenre/GetTrackHasGenreByIdHandler.java @@ -32,6 +32,10 @@ public class GetTrackHasGenreByIdHandler implements ActionHandler { TrackHasGenreMessages.GetTrackHasGenreByIdRequest.parseFrom(requestPayload); int id = getByIdRequest.getId(); + if (id <= 0) { + throw new IllegalArgumentException("ID must be greater than 0"); + } + Optional trackHasGenreOpt = trackHasGenreService.getTrackHasGenreById(id); if (trackHasGenreOpt.isEmpty()){ @@ -47,6 +51,11 @@ public class GetTrackHasGenreByIdHandler implements ActionHandler { return TransportProtocol.Response.newBuilder() .setStatusCode(200) .setPayload(getByIdResponse.toByteString()); + } catch (IllegalArgumentException e) { + logger.error("Validation error", e); + return TransportProtocol.Response.newBuilder() + .setStatusCode(400) + .setPayload(ByteString.copyFromUtf8("Validation error: " + e.getMessage())); } catch (Exception e) { logger.error("Error getting track has genre by ID", e); return TransportProtocol.Response.newBuilder()