Skip to content

Commit

Permalink
client, fix bug on POM dependency parse (#2958)
Browse files Browse the repository at this point in the history
  • Loading branch information
weidongxu-microsoft authored Sep 29, 2024
1 parent e283800 commit 032c478
Show file tree
Hide file tree
Showing 12 changed files with 193 additions and 11 deletions.
2 changes: 1 addition & 1 deletion core
Submodule core updated 27 files
+7 −0 .chronus/changes/termsOfServiceUrlCheck-2024-8-23-12-59-15.md
+0 −1 packages/http-client-csharp/eng/scripts/Generate.ps1
+5 −0 packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Properties/launchSettings.json
+1 −1 packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/ParameterProvider.cs
+172 −0 packages/http-client-csharp/generator/TestProjects/CadlRanch.Tests/Http/Parameters/Spread/SpreadTests.cs
+6 −0 packages/http-client-csharp/generator/TestProjects/CadlRanch/http/parameters/spread/Configuration.json
+48 −0 packages/http-client-csharp/generator/TestProjects/CadlRanch/http/parameters/spread/Parameters.Spread.sln
+58 −0 packages/http-client-csharp/generator/TestProjects/CadlRanch/http/parameters/spread/src/Generated/Alias.cs
+58 −0 packages/http-client-csharp/generator/TestProjects/CadlRanch/http/parameters/spread/src/Generated/Model.cs
+36 −0 ...generator/TestProjects/CadlRanch/http/parameters/spread/src/Generated/Models/BodyParameter.Serialization.cs
+17 −0 ...client-csharp/generator/TestProjects/CadlRanch/http/parameters/spread/src/Generated/Models/BodyParameter.cs
+14 −0 ...sharp/generator/TestProjects/CadlRanch/http/parameters/spread/src/Generated/ParametersSpreadModelFactory.cs
+22 −0 ...es/http-client-csharp/generator/TestProjects/CadlRanch/http/parameters/spread/src/Generated/SpreadClient.cs
+12 −0 ...-client-csharp/generator/TestProjects/CadlRanch/http/parameters/spread/src/Generated/SpreadClientOptions.cs
+16 −0 ...ges/http-client-csharp/generator/TestProjects/CadlRanch/http/parameters/spread/src/Parameters.Spread.csproj
+1,464 −0 packages/http-client-csharp/generator/TestProjects/CadlRanch/http/parameters/spread/tspCodeModel.json
+1 −1 packages/http-client-java/emitter/src/code-model-builder.ts
+4 −4 packages/http-client-java/emitter/src/external-schemas.ts
+0 −3 packages/http-client-java/eng/scripts/Build-Packages.ps1
+0 −6 ...client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/mapper/PomMapper.java
+57 −53 ...erator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/model/projectmodel/Project.java
+0 −4 ...-generator-mgmt/src/main/java/com/microsoft/typespec/http/client/generator/mgmt/mapper/FluentPomMapper.java
+1 −3 ...ient-java/generator/http-client-generator-test/src/main/java/com/cadl/multipart/models/InheritFileData.java
+4 −0 packages/http-client-python/eng/scripts/Build-Packages.ps1
+19 −0 packages/openapi/src/decorators.ts
+6 −0 packages/openapi/src/lib.ts
+12 −0 packages/openapi/test/decorators.test.ts
6 changes: 6 additions & 0 deletions fluentgen/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,12 @@
<version>5.9.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>4.11.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

package com.microsoft.typespec.http.client.generator.core.model.projectmodel;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

import java.net.URISyntaxException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;

public class ProjectTests {

@Test
public void testParsePom() throws URISyntaxException {
Path pomPath = Paths.get(ProjectTests.class.getClassLoader().getResource("test-pom.xml").toURI());

List<String> dependencyIdentifiers = Project.findPomDependencies(pomPath);

Assertions.assertTrue(dependencyIdentifiers.contains("com.azure.resourcemanager:azure-resourcemanager-resources:2.42.0:test"));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

package com.microsoft.typespec.http.client.generator.mgmt.mapper;

import com.microsoft.typespec.http.client.generator.core.model.clientmodel.Pom;
import com.microsoft.typespec.http.client.generator.mgmt.FluentGen;
import com.microsoft.typespec.http.client.generator.mgmt.FluentGenAccessor;
import com.microsoft.typespec.http.client.generator.mgmt.TestUtils;
import com.microsoft.typespec.http.client.generator.mgmt.model.projectmodel.FluentProject;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;

import java.util.List;

public class FluentPomMapperTests {

private static FluentGenAccessor fluentgenAccessor;

@BeforeAll
public static void ensurePlugin() {
FluentGen fluentgen = new TestUtils.MockFluentGen();
fluentgenAccessor = new FluentGenAccessor(fluentgen);
}

@Test
public void testMergeDependencies() {
String additionalDependencyIdentifier = "com.azure.resourcemanager:azure-resourcemanager-resources:2.42.0:test";

FluentProject fluentProject = Mockito.mock(FluentProject.class);
Mockito.when(fluentProject.getGroupId()).thenReturn("com.azure.resourcemanager");
Mockito.when(fluentProject.getArtifactId()).thenReturn("azure-resourcemanager-mock");
Mockito.when(fluentProject.getVersion()).thenReturn("1.0.0-beta.1");
Mockito.when(fluentProject.getServiceName()).thenReturn("MockManagement");
Mockito.when(fluentProject.getServiceDescription()).thenReturn("MockManagement");
Mockito.when(fluentProject.getServiceDescriptionForPom()).thenReturn("MockManagement");
Mockito.when(fluentProject.getPomDependencyIdentifiers()).thenReturn(List.of(additionalDependencyIdentifier));

Pom pom = new FluentPomMapper().map(fluentProject);

Assertions.assertTrue(pom.getDependencyIdentifiers().stream().anyMatch(p -> p.equals(additionalDependencyIdentifier)));
}
}
105 changes: 105 additions & 0 deletions fluentgen/src/test/resources/test-pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
<!--
~ Copyright (c) Microsoft Corporation. All rights reserved.
~ Licensed under the MIT License.
~ Code generated by Microsoft (R) AutoRest Code Generator.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.azure</groupId>
<artifactId>azure-client-sdk-parent</artifactId>
<version>1.7.0</version> <!-- {x-version-update;com.azure:azure-client-sdk-parent;current} -->
<relativePath>../../parents/azure-client-sdk-parent</relativePath>
</parent>

<groupId>com.azure.resourcemanager</groupId>
<artifactId>azure-resourcemanager-databricks</artifactId>
<version>1.0.0-beta.5</version> <!-- {x-version-update;com.azure.resourcemanager:azure-resourcemanager-databricks;current} -->
<packaging>jar</packaging>

<name>Microsoft Azure SDK for AzureDatabricks Management</name>
<description>This package contains Microsoft Azure SDK for AzureDatabricks Management SDK. For documentation on how to use this package, please see https://aka.ms/azsdk/java/mgmt. The Microsoft Azure management APIs allow end users to operate on Azure Databricks Workspace / Access Connector resources. Package tag package-2023-05-01.</description>
<url>https://github.com/Azure/azure-sdk-for-java</url>

<licenses>
<license>
<name>The MIT License (MIT)</name>
<url>http://opensource.org/licenses/MIT</url>
<distribution>repo</distribution>
</license>
</licenses>

<scm>
<url>https://github.com/Azure/azure-sdk-for-java</url>
<connection>scm:git:git@github.com:Azure/azure-sdk-for-java.git</connection>
<developerConnection>scm:git:git@github.com:Azure/azure-sdk-for-java.git</developerConnection>
<tag>HEAD</tag>
</scm>
<developers>
<developer>
<id>microsoft</id>
<name>Microsoft</name>
</developer>
</developers>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jacoco.min.linecoverage>0</jacoco.min.linecoverage>
<jacoco.min.branchcoverage>0</jacoco.min.branchcoverage>
</properties>
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-core</artifactId>
<version>1.52.0</version> <!-- {x-version-update;com.azure:azure-core;dependency} -->
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-core-management</artifactId>
<version>1.15.3</version> <!-- {x-version-update;com.azure:azure-core-management;dependency} -->
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-core-test</artifactId>
<version>1.27.0-beta.1</version> <!-- {x-version-update;com.azure:azure-core-test;dependency} -->
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>com.azure</groupId>
<artifactId>azure-core-http-jdk-httpclient</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.13.3</version> <!-- {x-version-update;com.azure:azure-identity;dependency} -->
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>4.11.0</version> <!-- {x-version-update;org.mockito:mockito-core;external_dependency} -->
<scope>test</scope>
</dependency>
<!-- bytebuddy dependencies are required for mockito 4.11.0 to work with Java 21. Mockito 4.11.0 is the last release -->
<!-- of Mockito supporting Java 8 as a baseline. -->
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
<version>1.14.12</version> <!-- {x-version-update;testdep_net.bytebuddy:byte-buddy;external_dependency} -->
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy-agent</artifactId>
<version>1.14.12</version> <!-- {x-version-update;testdep_net.bytebuddy:byte-buddy-agent;external_dependency} -->
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.azure.resourcemanager</groupId>
<artifactId>azure-resourcemanager-resources</artifactId>
<version>2.42.0</version> <!-- {x-version-update;com.azure.resourcemanager:azure-resourcemanager-resources;dependency} -->
<scope>test</scope>
</dependency>
</dependencies>
</project>
4 changes: 2 additions & 2 deletions package-lock.json

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

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@autorest/java",
"version": "4.1.38",
"version": "4.1.40",
"description": "The Java extension for classic generators in AutoRest.",
"scripts": {
"autorest": "autorest",
Expand Down
4 changes: 4 additions & 0 deletions typespec-extension/changelog.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Release History

## 0.21.2 (2024-09-30)

Compatible with compiler 0.60.

## 0.21.1 (2024-09-27)

Compatible with compiler 0.60.
Expand Down
4 changes: 2 additions & 2 deletions typespec-extension/package-lock.json

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

2 changes: 1 addition & 1 deletion 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.21.1",
"version": "0.21.2",
"description": "TypeSpec library for emitting Java client from the TypeSpec REST protocol binding",
"keywords": [
"TypeSpec"
Expand Down
2 changes: 1 addition & 1 deletion typespec-tests/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
},
"dependencies": {
"@azure-tools/cadl-ranch-specs": "0.37.1",
"@azure-tools/typespec-java": "file:/../typespec-extension/azure-tools-typespec-java-0.21.1.tgz"
"@azure-tools/typespec-java": "file:/../typespec-extension/azure-tools-typespec-java-0.21.2.tgz"
},
"devDependencies": {
"@typespec/prettier-plugin-typespec": "~0.60.0",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,7 @@
import com.azure.core.util.BinaryData;

/**
* Image file of content-type "image/jpeg"
*
* The file details for the "fileData1" field.
* Image file of content-type "image/jpeg".
*/
@Immutable
public final class InheritFileData {
Expand Down

0 comments on commit 032c478

Please sign in to comment.