Skip to content

Latest commit

 

History

History
49 lines (37 loc) · 1.99 KB

File metadata and controls

49 lines (37 loc) · 1.99 KB

pure-java-demo

Runnable Pure Java JSON-RPC 2.0 sample without Spring.

Run

From repository root:

./gradlew -p samples/pure-java-demo run

Run Tests

From repository root:

./gradlew -p samples/pure-java-demo test

What This Demo Covers

  • Single request success flow
  • Notification flow (no response body)
  • Mixed batch flow (request + notification + error)
  • Parse error flow
  • Typed handler registration (JsonRpcTypedMethodHandlerFactory)
  • Manual handler registration (dispatcher.register)
  • Request-validator policy switch with JsonRpcParamsTypeViolationCodePolicy
  • Request validation profile with JsonRpcRequestValidationOptions (require-id-member, allow-fractional-id, reject-response-fields)
  • Response validation profile with JsonRpcResponseValidationOptions (reject-request-fields, reject-duplicate-members, error-code.policy)
  • Incoming response-side flow using envelope classifier, error-code classifier, parser, and validator utilities
  • Interceptor lifecycle flow (beforeValidate, beforeInvoke, afterInvoke, onError)
  • Outbound request composition using JsonRpcRequestBuilder and JsonRpcRequestBatchBuilder
  • Direct paramsObject(...) and paramsArray(...) builder examples for outbound requests
  • Manual JSON-RPC error object composition using JsonRpcError.of(code, message, data)
  • Record, POJO, collection, and map params converted through Jackson and passed via params(JsonNode)

Key Class

  • src/main/java/com/limehee/jsonrpc/sample/purejava/PureJavaDemoApplication.java
  • src/main/java/com/limehee/jsonrpc/sample/purejava/ResponseSideUtilitiesExample.java
  • src/main/java/com/limehee/jsonrpc/sample/purejava/InterceptorFlowExample.java
  • src/main/java/com/limehee/jsonrpc/sample/purejava/ValidationProfileExample.java
  • src/main/java/com/limehee/jsonrpc/sample/purejava/OutboundRequestCompositionExample.java

The main method prints one output payload per scenario so you can follow request -> dispatch -> response flow.