Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion core
Submodule core updated 62 files
+0 −7 .chronus/changes/main-2026-0-7-16-58-10.md
+0 −7 .chronus/changes/python-optionalCred-2026-0-6-15-55-50.md
+0 −7 .chronus/changes/specs-noAuth-2026-0-6-16-4-0.md
+8 −0 .github/instructions/http-client-java.instructions.md
+10 −0 packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Properties/launchSettings.json
+48 −0 ...ient-csharp/generator/TestProjects/Spector/http/authentication/noauth/union/Authentication.Noauth.Union.sln
+3 −0 packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/noauth/union/Configuration.json
+15 −0 ...harp/generator/TestProjects/Spector/http/authentication/noauth/union/src/Authentication.Noauth.Union.csproj
+12 −0 ...tProjects/Spector/http/authentication/noauth/union/src/Generated/Models/AuthenticationNoauthUnionContext.cs
+41 −0 ...-client-csharp/generator/TestProjects/Spector/http/authentication/noauth/union/src/Generated/UnionClient.cs
+12 −0 ...-csharp/generator/TestProjects/Spector/http/authentication/noauth/union/src/Generated/UnionClientOptions.cs
+144 −0 packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/noauth/union/tspCodeModel.json
+3 −0 packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/Configuration.json
+48 −0 packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/Parameters.Query.sln
+26 −0 packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/src/Generated/Constant.cs
+12 −0 ...-csharp/generator/TestProjects/Spector/http/parameters/query/src/Generated/Models/ParametersQueryContext.cs
+20 −0 packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/src/Generated/QueryClient.cs
+12 −0 ...http-client-csharp/generator/TestProjects/Spector/http/parameters/query/src/Generated/QueryClientOptions.cs
+15 −0 packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/src/Parameters.Query.csproj
+210 −0 packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/tspCodeModel.json
+8 −0 packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/FormData.cs
+684 −246 packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/tspCodeModel.json
+1,236 −1,483 packages/http-client-csharp/package-lock.json
+19 −19 packages/http-client-csharp/package.json
+2 −0 packages/http-client-java/generator/http-client-generator-clientcore-test/.gitignore
+1 −1 packages/http-client-java/generator/http-client-generator-clientcore-test/package.json
+48 −0 ...a/generator/http-client-generator-clientcore-test/src/test/java/authentication/noauth/union/UnionTests.java
+16 −0 ...-client-java/generator/http-client-generator-clientcore-test/src/test/java/parameters/query/QueryTests.java
+3 −0 packages/http-client-java/generator/http-client-generator-test/.gitignore
+2 −2 packages/http-client-java/generator/http-client-generator-test/package.json
+47 −0 ...-client-java/generator/http-client-generator-test/src/test/java/authentication/noauth/union/UnionTests.java
+26 −0 ...r/http-client-generator-test/src/test/java/azure/clientgenerator/core/clientlocation/NewSubClientTests.java
+26 −0 ...ator/http-client-generator-test/src/test/java/azure/clientgenerator/core/clientlocation/ParameterTests.java
+26 −0 ...tor/http-client-generator-test/src/test/java/azure/clientgenerator/core/clientlocation/RootClientTests.java
+27 −0 ...ator/http-client-generator-test/src/test/java/azure/clientgenerator/core/clientlocation/SubClientTests.java
+23 −0 ...rator/http-client-generator-test/src/test/java/azure/resourcemanager/operationtemplates/OperationTests.java
+49 −0 ...s/http-client-java/generator/http-client-generator-test/src/test/java/documentation/DocumentationTests.java
+16 −0 packages/http-client-java/generator/http-client-generator-test/src/test/java/parameters/query/QueryTests.java
+29 −0 ...s/http-client-java/generator/http-client-generator-test/src/test/java/payload/multipart/MultipartTests.java
+7 −1 ...tp-client-java/generator/http-client-generator-test/src/test/java/specialwords/ModelPropertyClientTest.java
+5 −5 packages/http-client-java/package-lock.json
+2 −2 packages/http-client-java/package.json
+7 −0 packages/http-client-python/CHANGELOG.md
+2 −2 packages/http-client-python/CONTRIBUTING.md
+17 −0 ...ttp-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_operationtemplates_async.py
+33 −0 packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_payload_multipart_async.py
+13 −14 packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_arm_operationtemplates.py
+31 −0 packages/http-client-python/generator/test/azure/mock_api_tests/test_payload_multipart.py
+1 −0 packages/http-client-python/generator/test/azure/requirements.txt
+33 −0 packages/http-client-python/generator/test/unbranded/mock_api_tests/asynctests/test_payload_multipart_async.py
+31 −0 packages/http-client-python/generator/test/unbranded/mock_api_tests/test_payload_multipart.py
+8 −3 packages/http-client-python/generator/test/unbranded/mock_api_tests/test_unbranded.py
+1 −0 packages/http-client-python/generator/test/unbranded/requirements.txt
+215 −219 packages/http-client-python/package-lock.json
+33 −33 packages/http-client-python/package.json
+11 −0 packages/http-specs/CHANGELOG.md
+1 −1 packages/http-specs/package.json
+12 −0 packages/http-specs/spec-summary.md
+2 −2 packages/http-specs/specs/documentation/main.tsp
+3 −1 packages/http-specs/specs/documentation/mockapi.ts
+19 −0 packages/http-specs/specs/special-words/main.tsp
+14 −0 packages/http-specs/specs/special-words/mockapi.ts
6 changes: 6 additions & 0 deletions typespec-extension/changelog.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Release History

## 0.38.3 (2026-01-15)

Compatible with compiler 1.8.0.

- Updated package dependencies to latest versions.

## 0.38.2 (2026-01-14)

Compatible with compiler 1.8.0.
Expand Down
54 changes: 43 additions & 11 deletions typespec-extension/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions typespec-extension/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@azure-tools/typespec-java",
"version": "0.38.2",
"version": "0.38.3",
"description": "TypeSpec library for emitting Java client from the TypeSpec REST protocol binding",
"keywords": [
"TypeSpec"
Expand Down Expand Up @@ -51,7 +51,7 @@
"@azure-tools/typespec-azure-core": ">=0.64.0 <1.0.0",
"@azure-tools/typespec-azure-resource-manager": ">=0.64.0 <1.0.0",
"@azure-tools/typespec-azure-rulesets": ">=0.64.0 <1.0.0",
"@azure-tools/typespec-client-generator-core": ">=0.64.0 <1.0.0",
"@azure-tools/typespec-client-generator-core": ">=0.64.1 <1.0.0",
"@azure-tools/typespec-liftr-base": ">=0.11.0 <1.0.0",
"@typespec/compiler": "^1.8.0",
"@typespec/http": "^1.8.0",
Expand All @@ -70,7 +70,7 @@
"@azure-tools/typespec-azure-core": "0.64.0",
"@azure-tools/typespec-azure-resource-manager": "0.64.0",
"@azure-tools/typespec-azure-rulesets": "0.64.0",
"@azure-tools/typespec-client-generator-core": "0.64.0",
"@azure-tools/typespec-client-generator-core": "0.64.1",
"@azure-tools/typespec-liftr-base": "0.11.0",
"@microsoft/api-extractor": "^7.55.2",
"@types/js-yaml": "~4.0.9",
Expand All @@ -95,7 +95,7 @@
"eslint-plugin-deprecation": "~3.0.0",
"eslint-plugin-import": "^2.32.0",
"eslint-plugin-unicorn": "^62.0.0",
"prettier": "~3.7.4",
"prettier": "~3.8.0",
"rimraf": "~6.1.2",
"typescript": "~5.9.3",
"typescript-eslint": "^8.53.0",
Expand Down
10 changes: 5 additions & 5 deletions typespec-tests/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,14 @@
"dependencies": {
"@typespec/spec-api": "0.1.0-alpha.12",
"@typespec/spector": "0.1.0-alpha.22",
"@typespec/http-specs": "0.1.0-alpha.30",
"@azure-tools/azure-http-specs": "0.1.0-alpha.35",
"@azure-tools/typespec-java": "file:/../typespec-extension/azure-tools-typespec-java-0.38.2.tgz"
"@typespec/http-specs": "0.1.0-alpha.31",
"@azure-tools/azure-http-specs": "0.1.0-alpha.36",
"@azure-tools/typespec-java": "file:/../typespec-extension/azure-tools-typespec-java-0.38.3.tgz"
},
"devDependencies": {
"@typespec/prettier-plugin-typespec": "^1.8.0",
"prettier-plugin-organize-imports": "^4.3.0",
"prettier": "^3.7.4"
"prettier": "^3.8.0"
},
"overrides": {
"@typespec/compiler": "1.8.0",
Expand All @@ -31,7 +31,7 @@
"@typespec/sse": "0.78.0",
"@typespec/streams": "0.78.0",
"@azure-tools/typespec-azure-core": "0.64.0",
"@azure-tools/typespec-client-generator-core": "0.64.0",
"@azure-tools/typespec-client-generator-core": "0.64.1",
"@azure-tools/typespec-azure-resource-manager": "0.64.0",
"@azure-tools/typespec-autorest": "0.64.0",
"@azure-tools/typespec-liftr-base": "0.11.0"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

package authentication.noauth.union;

import authentication.util.BearerTokenAuthenticationPolicy;
import com.azure.core.credential.AccessToken;
import com.azure.core.exception.HttpResponseException;
import java.time.OffsetDateTime;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import reactor.core.publisher.Mono;

public class UnionTests {

private static final String EXPECTED_TOKEN = "https://security.microsoft.com/.default";

private static UnionClientBuilder createClientBuilder() {
return new UnionClientBuilder();
}

private static BearerTokenAuthenticationPolicy createBearerPolicy() {
return new BearerTokenAuthenticationPolicy(
tokenRequestContext -> Mono.just(new AccessToken(EXPECTED_TOKEN, OffsetDateTime.now().plusHours(1))));
}

@Test
public void validNoAuthAllowsRequestsWithoutAuthentication() {
UnionClient client = createClientBuilder().buildClient();

Assertions.assertDoesNotThrow(() -> client.validNoAuth());
}

@Test
public void validTokenFailsWhenAuthorizationMissing() {
UnionClient client = createClientBuilder().buildClient();

Assertions.assertThrows(HttpResponseException.class, client::validToken);
}

@Test
public void validTokenSucceedsWithBearerToken() {
UnionClient client = createClientBuilder().addPolicy(createBearerPolicy()).buildClient();

Assertions.assertDoesNotThrow(() -> client.validToken());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

package azure.clientgenerator.core.clientlocation;

import azure.clientgenerator.core.clientlocation.newsubclient.ArchiveOperationsClient;
import azure.clientgenerator.core.clientlocation.newsubclient.MoveToNewSubClientBuilder;
import azure.clientgenerator.core.clientlocation.newsubclient.ProductOperationsClient;
import org.junit.jupiter.api.Test;

public class NewSubClientTests {

private final MoveToNewSubClientBuilder builder = new MoveToNewSubClientBuilder();

@Test
public void testProductOperations() {
ProductOperationsClient productClient = builder.buildProductOperationsClient();
productClient.listProducts();
}

@Test
public void testArchiveOperations() {
ArchiveOperationsClient archiveClient = builder.buildArchiveOperationsClient();
archiveClient.archiveProduct();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

package azure.clientgenerator.core.clientlocation;

import azure.clientgenerator.core.clientlocation.parameter.MoveMethodParameterToClient;
import azure.clientgenerator.core.clientlocation.parameter.MoveMethodParameterToClientBuilder;
import azure.clientgenerator.core.clientlocation.parameter.models.Blob;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

public class ParameterTests {

private final MoveMethodParameterToClient client
= new MoveMethodParameterToClientBuilder().storageAccount("testaccount").buildClient();

@Test
public void testGetBlob() {
Blob blob = client.getBlob("testcontainer", "testblob.txt");
Assertions.assertNotNull(blob);
Assertions.assertEquals("blob-001", blob.getId());
Assertions.assertEquals("testblob.txt", blob.getName());
Assertions.assertEquals(1024, blob.getSize());
Assertions.assertEquals("/testcontainer/testblob.txt", blob.getPath());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

package azure.clientgenerator.core.clientlocation;

import azure.clientgenerator.core.clientlocation.rootclient.MoveToRootClient;
import azure.clientgenerator.core.clientlocation.rootclient.MoveToRootClientBuilder;
import azure.clientgenerator.core.clientlocation.rootclient.ResourceOperationsClient;
import org.junit.jupiter.api.Test;

public class RootClientTests {

private final MoveToRootClientBuilder builder = new MoveToRootClientBuilder();

@Test
public void testRootClient() {
MoveToRootClient rootClient = builder.buildClient();
rootClient.getHealthStatus();
}

@Test
public void testResourceOperations() {
ResourceOperationsClient resourceClient = builder.buildResourceOperationsClient();
resourceClient.getResource();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

package azure.clientgenerator.core.clientlocation;

import azure.clientgenerator.core.clientlocation.subclient.AdminOperationsClient;
import azure.clientgenerator.core.clientlocation.subclient.MoveToExistingSubClientBuilder;
import azure.clientgenerator.core.clientlocation.subclient.UserOperationsClient;
import org.junit.jupiter.api.Test;

public class SubClientTests {

private final MoveToExistingSubClientBuilder builder = new MoveToExistingSubClientBuilder();

@Test
public void testAdminOperations() {
AdminOperationsClient adminClient = builder.buildAdminOperationsClient();
adminClient.getAdminInfo();
adminClient.deleteUser();
}

@Test
public void testUserOperations() {
UserOperationsClient userClient = builder.buildUserOperationsClient();
userClient.getUser();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import azure.resourcemanager.operationtemplates.models.Order;
import azure.resourcemanager.operationtemplates.models.OrderProperties;
import azure.resourcemanager.operationtemplates.models.Origin;
import azure.resourcemanager.operationtemplates.models.Product;
import azure.resourcemanager.operationtemplates.models.Widget;
import azure.resourcemanager.operationtemplates.models.WidgetProperties;
import com.azure.core.http.HttpPipeline;
Expand Down Expand Up @@ -129,6 +130,28 @@ public void testOptionalBody() {
Assertions.assertEquals("Action completed successfully with parameters", actionResult.result());
}

@Test
public void testLroPaging() {
String resourceGroup = "test-rg";
String productName = "default";
List<Product> productList
= manager.lroPagings().postPagingLro(resourceGroup, productName).stream().collect(Collectors.toList());
Assertions.assertFalse(productList.isEmpty());
Assertions.assertEquals(2, productList.size());

Product product1 = productList.get(0);
Assertions.assertNotNull(product1);
Assertions.assertEquals("product1", product1.name());
Assertions.assertEquals("Succeeded", product1.properties().provisioningState());
Assertions.assertEquals("product1", product1.properties().productId());

Product product2 = productList.get(1);
Assertions.assertNotNull(product2);
Assertions.assertEquals("product2", product2.name());
Assertions.assertEquals("Succeeded", product2.properties().provisioningState());
Assertions.assertEquals("product2", product2.properties().productId());
}

// for LRO operations, we need to override default poll interval
private static OperationTemplatesManager buildManager() {
try {
Expand Down
Loading