fix(server): handle PostgreSQL JSON values in character list#28
Merged
Conversation
Convert PGobject values from public character map queries before assigning string response fields. This fixes staging validation returning 500 on /api/open/character/list after pgjdbc returns jsonb fields as PGobject. Verification: - mvn -Dmaven.repo.local=/tmp/juhao_m2repo -Dtest=CharacterOpenControllerTest test - ./scripts/validate-backend.sh - git diff --check
There was a problem hiding this comment.
Pull request overview
This pull request fixes a backend 500 error on the public character list endpoint (/api/open/character/list) after a PostgreSQL JDBC behavior change where json/jsonb columns can be returned as org.postgresql.util.PGobject instead of String.
Changes:
- Update
CharacterOpenController.convertMapToResponse()to convert map-backed string fields via a safe helper (toStringValue) that unwrapsPGobject. - Add a regression unit test ensuring
PGobjectJSONB values (e.g.,tags) are converted into the expected JSON string output.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
vocata-server/src/main/java/com/vocata/character/controller/CharacterOpenController.java |
Replace direct (String) casts with a helper that safely converts PGobject and other value types to String. |
vocata-server/src/test/java/com/vocata/character/controller/CharacterOpenControllerTest.java |
Add a regression test that mocks a map record containing PGobject JSONB tags and asserts the endpoint returns 200 and correct tag string. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
/api/open/character/listreturning 500 when pgjdbc returns PostgreSQL JSON/JSONB values asPGobject.Stringcasts.PGobjecttags from the public character list path.Root Cause
The staging smoke request succeeded at SQL level, but
CharacterOpenController.convertMapToResponse()casttagsdirectly toString. After the pgjdbc upgrade, thejsonbvalue was returned asorg.postgresql.util.PGobject, causingClassCastExceptionand a 500 response.Verification
mvn -Dmaven.repo.local=/tmp/juhao_m2repo -Dtest=CharacterOpenControllerTest test: passed../scripts/validate-backend.sh: passed, 10 tests run.git diff --check: passed.Notes