Skip to content

Java - Type cast null parameters in samples and tests - #11967

Merged
Weidong Xu (weidongxu-microsoft) merged 1 commit into
mainfrom
Java_TypeCastNullParametersInSamplesAndTests
Sep 16, 2026
Merged

Weidong Xu (weidongxu-microsoft) merged 1 commit into
mainfrom
Java_TypeCastNullParametersInSamplesAndTests

Conversation

@alzimmermsft

Copy link
Copy Markdown
Contributor

Adds type casting to null parameters in generated Java samples and tests to prevent ambiguous call site errors after generation.

@github-actions

Copy link
Copy Markdown
Contributor

All changed packages have been documented.

  • @typespec/http-client-java
Show changes

@typespec/http-client-java - fix ✏️

Cast null arguments to their declared Java types in generated samples and tests so overloaded API calls are unambiguous.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

One or more issues must be addressed before approval.

Get a fresh assessment by requesting another Copilot review.

Pull request overview

Updates Java emitter example generation so typed null arguments avoid ambiguous overloaded calls.

Changes:

  • Added shared null-parameter casting logic.
  • Applied it to protocol and client-method examples.
  • Updated generated samples/tests and added coverage plus a changelog entry.
File summaries
File Description
packages/http-client-java/generator/http-client-generator-test/src/test/java/tsptest/versioning/generated/VersioningOpListTests.java Updated as part of this pull request.
packages/http-client-java/generator/http-client-generator-test/src/test/java/tsptest/specialchars/generated/BuiltinOpReadTests.java Updated as part of this pull request.
packages/http-client-java/generator/http-client-generator-test/src/test/java/tsptest/model/generated/ModelOpPutNestedTests.java Updated as part of this pull request.
packages/http-client-java/generator/http-client-generator-test/src/test/java/tsptest/flatten/generated/FlattenOpSendTests.java Updated as part of this pull request.
packages/http-client-java/generator/http-client-generator-test/src/test/java/tsptest/builtin/generated/BuiltinOpReadTests.java Updated as part of this pull request.
packages/http-client-java/generator/http-client-generator-test/src/samples/java/tsptest/versioning/generated/VersioningOpList.java Updated as part of this pull request.
packages/http-client-java/generator/http-client-generator-test/src/samples/java/tsptest/specialchars/generated/BuiltinOpRead.java Updated as part of this pull request.
packages/http-client-java/generator/http-client-generator-test/src/samples/java/tsptest/model/generated/ModelOpPutNested.java Updated as part of this pull request.
packages/http-client-java/generator/http-client-generator-test/src/samples/java/tsptest/flatten/generated/FlattenOpSend.java Updated as part of this pull request.
packages/http-client-java/generator/http-client-generator-test/src/samples/java/tsptest/builtin/generated/BuiltinOpRead.java Updated as part of this pull request.
packages/http-client-java/generator/http-client-generator-core/src/test/java/com/microsoft/typespec/http/client/generator/core/template/example/ExampleWriterUtilTests.java Updated as part of this pull request.
packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/template/example/ProtocolExampleWriter.java Updated as part of this pull request.
packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/template/example/ExampleWriterUtil.java Updated as part of this pull request.
packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/template/example/ClientMethodExampleWriter.java Updated as part of this pull request.
.chronus/changes/http-client-java-cast-null-sample-arguments-2026-09-15.md Updated as part of this pull request.
Review details

Suppressed comments (2)

packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/template/example/ClientMethodExampleWriter.java:67

  • The added tests do not exercise this ClientMethodExampleWriter path; they only call ExampleWriterUtil.getParameterExpression directly. Add an entrypoint test for a client-method example with a typed null parameter so the parameter mapping, cast, and required import are verified together.
        String parameterInvocations = methodParameters.stream()
            .map(methodParameter -> ExampleWriterUtil.getParameterExpression(
                methodParameter.getClientMethodParameter().getClientType(),
                nodeVisitor.accept(parseNodeFromParameter(method, proxyMethodExample, methodParameter))))
            .collect(Collectors.joining(", "));

packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/template/example/ProtocolExampleWriter.java:82

  • This new call site is not covered by the added tests: ExampleWriterUtilTests invokes the helper directly, so it would still pass if ProtocolExampleWriter stopped applying the cast or collecting the type import. Add a template/writer test that exercises a nullable non-java.lang parameter (for example OffsetDateTime) and asserts the rendered invocation and imports.
            params.add(ExampleWriterUtil.getParameterExpression(parameter.getClientType(),
                parameter.getClientType().defaultValueExpression()));
  • Files reviewed: 5/15 changed files
  • Comments generated: 1
  • Review effort level: Lite

💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@azure-sdk-automation

Copy link
Copy Markdown

You can try these changes here

🛝 Playground 🌐 Website 🛝 VSCode Extension

Merged via the queue into main with commit ad33c95 Sep 16, 2026
37 checks passed
@weidongxu-microsoft
Weidong Xu (weidongxu-microsoft) deleted the Java_TypeCastNullParametersInSamplesAndTests branch September 16, 2026 03:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

emitter:client:java Issue for the Java client emitter: @typespec/http-client-java

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants