GeezerVison is showing github.com — fix: JSON round-trip fidelity, concurrency starvation, and lifecycle fixes by m0ver · Pull Request #96 · tinystruct/tinystruct
Conversation
Summary
This PR merges autonomous maintenance and stability fixes from agent/maintenance into master:
1. JSON Round-Trip Fidelity & Escaping (Builder / Builders)
- Key Escaping: Escape object keys during serialization in
appendKeyValue to pair with parser unescaping.
- Literal & Type Preservation: Parse array
boolean and null literals into corresponding typed Builder values.
- Quote Retention: Keep
String values quoted even when they look like numbers, booleans, or nulls so parse/toString() cycles preserve types.
- String Scanning: Fix JSON string scanning when strings end with escaped backslashes (
"\\\\").
- Parity: Ensure array string elements unescape cleanly upon parsing, matching object field behavior.
- Tests: Add
BuilderRoundTripTest and update BuildersTest, BuilderTest, and BuilderCharSequenceViewTest to verify round-trip fidelity.
2. Concurrency & Performance (DistributedMessageQueue)
- Fix lock starvation in
DistributedMessageQueue.take() by scoping lock acquisition strictly around pollMessage(...), releasing the lock before sleeping.
3. Application Lifecycle (ApplicationManager)
- Fix
uninstall(Application) to remove all actions registered by the target application rather than returning on the first match.
4. Logging Thread Safety (LogFormatter)
- Replace shared unsynchronized
SimpleDateFormat with thread-safe DateTimeFormatter.
5. API Cleanup (Application / AbstractApplication)
- Remove erroneous
@Deprecated annotations on setAction(String, String) to support dynamic runtime action mapping without compiler warnings.
Verification
Builder & Builders suites: 84/84 tests passed (BuilderTest, BuildersTest, BuilderCharSequenceViewTest, BuilderRoundTripTest).
DistributedMessageQueueTest, ApplicationManagerTest, LoggerTest passed.
- MCP Tool test suites passed.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
…d-safety, and app uninstall
- Fix escaped backslash handling in Builder and Builders JSON parsing and unescape array string elements
- Release lock between poll attempts in DistributedMessageQueue.take() to prevent starving background copy() workers, and guard against unregistered sessions
- Replace SimpleDateFormat with thread-safe DateTimeFormatter in LogFormatter
- Remove all matching actions in ApplicationManager.uninstall() and ensure initialized flag is set regardless of default.import.applications
- Undeprecate Application.setAction(String, String) for dynamic route registration
- Add unit tests covering each fix
…round trips
- Builder: escape object keys on output; keep String values quoted even when they
look like numbers/booleans/null; add null-literal single value
- Builders: parse true/false/null array elements as Boolean/null (was String)
- Tests: add BuilderRoundTripTest; BuilderCharSequenceViewTest now expects Boolean.TRUE
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Assignees
No one assigned
Milestone
No milestone
Development
Successfully merging this pull request may close these issues.
Uh oh!
There was an error while loading. Please reload this page.
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.