From cf1c246c03af33bebc8ebbd353d16b52f5f6c4c8 Mon Sep 17 00:00:00 2001 From: Weidong Xu Date: Sat, 28 Feb 2026 11:27:19 +0800 Subject: [PATCH 1/2] http-client-java, warning on not spread json-merge-patch payload --- .../http-client-java/emitter/src/code-model-builder.ts | 5 +++++ packages/http-client-java/emitter/src/lib.ts | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/packages/http-client-java/emitter/src/code-model-builder.ts b/packages/http-client-java/emitter/src/code-model-builder.ts index ee84ce1aa2a..2d710e7d378 100644 --- a/packages/http-client-java/emitter/src/code-model-builder.ts +++ b/packages/http-client-java/emitter/src/code-model-builder.ts @@ -2077,6 +2077,11 @@ export class CodeModelBuilder { if (jsonMergePatch) { // skip model flatten, if "application/merge-patch+json" + reportDiagnostic(this.program, { + code: "spread-json-merge-patch-payload-not-supported", + target: sdkMethod.__raw ?? NoTarget, + }); + if (sdkType.isGeneratedName) { schema.language.default.name = pascalCase(op.language.default.name) + "PatchRequest"; } diff --git a/packages/http-client-java/emitter/src/lib.ts b/packages/http-client-java/emitter/src/lib.ts index a7e5491c184..9ffcee2adf5 100644 --- a/packages/http-client-java/emitter/src/lib.ts +++ b/packages/http-client-java/emitter/src/lib.ts @@ -119,6 +119,13 @@ export const $lib = createTypeSpecLibrary({ default: paramMessage`Constant header '${"headerName"}' is removed from response headers.`, }, }, + "spread-json-merge-patch-payload-not-supported": { + severity: "warning", + messages: { + default: + "Spread JSON merge-patch payload is not supported. The reason is that a property in JSON merge-patch payload class can: set a value; not set so that value does not change; set to null to remove the value. A parameter on method cannot distinguish the latter 2 cases.", + }, + }, }, emitter: { options: EmitterOptionsSchema, From 738de3c63d1e8c21c92714e732e9a70cf336c315 Mon Sep 17 00:00:00 2001 From: Weidong Xu Date: Sat, 28 Feb 2026 11:34:03 +0800 Subject: [PATCH 2/2] changelog --- ...t-spread-json-merge-patch-payload-2026-1-28-11-33-56.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .chronus/changes/http-client-java_warning-on-not-spread-json-merge-patch-payload-2026-1-28-11-33-56.md diff --git a/.chronus/changes/http-client-java_warning-on-not-spread-json-merge-patch-payload-2026-1-28-11-33-56.md b/.chronus/changes/http-client-java_warning-on-not-spread-json-merge-patch-payload-2026-1-28-11-33-56.md new file mode 100644 index 00000000000..549b6dbdc4b --- /dev/null +++ b/.chronus/changes/http-client-java_warning-on-not-spread-json-merge-patch-payload-2026-1-28-11-33-56.md @@ -0,0 +1,7 @@ +--- +changeKind: feature +packages: + - "@typespec/http-client-java" +--- + +Add a warning when emitter does not spread for json-merge-patch payload. \ No newline at end of file