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
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.8.2 (2023-06-25)

Compatible with compiler 0.45.

## 0.8.2 (2023-06-15)

Compatible with compiler 0.45.
Expand Down
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.8.2",
"version": "0.8.3",
"description": "TypeSpec library for emitting Java client from the TypeSpec REST protocol binding",
"keywords": [
"TypeSpec"
Expand Down
2 changes: 1 addition & 1 deletion typespec-extension/src/code-model-builder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -603,7 +603,7 @@ export class CodeModelBuilder {
let finalSchema = undefined;

const verb = httpOperation.verb;
const useNewPollStrategy = isLroNewPollingStrategy(operation, lroMetadata);
const useNewPollStrategy = isLroNewPollingStrategy(httpOperation, lroMetadata);

let pollingStrategy: Metadata | undefined = undefined;
if (useNewPollStrategy) {
Expand Down
40 changes: 23 additions & 17 deletions typespec-extension/src/operation-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ export function getServiceVersion(client: CodeModelClient | CodeModel): ServiceV
return new ServiceVersion(name, description);
}

export function isLroNewPollingStrategy(operation: Operation, lroMetadata: LroMetadata): boolean {
export function isLroNewPollingStrategy(httpOperation: HttpOperation, lroMetadata: LroMetadata): boolean {
// at present, checks if operation uses template from Azure.Core
const azureCoreLroSvs = [
"LongRunningResourceCreateOrReplace",
Expand All @@ -152,7 +152,8 @@ export function isLroNewPollingStrategy(operation: Operation, lroMetadata: LroMe
"LongRunningRpcOperation",
];

let ret = false;
const operation = httpOperation.operation;
let useNewStrategy = false;
if (
lroMetadata.pollingInfo &&
lroMetadata.statusMonitorStep &&
Expand All @@ -162,24 +163,29 @@ export function isLroNewPollingStrategy(operation: Operation, lroMetadata: LroMe
if (operation.node.signature.kind === SyntaxKind.OperationSignatureReference) {
if (operation.node.signature.baseOperation.target.kind === SyntaxKind.MemberExpression) {
const sv = operation.node.signature.baseOperation.target.id.sv;
ret = azureCoreLroSvs.includes(sv);
useNewStrategy = azureCoreLroSvs.includes(sv);
}
}
}
return ret;

// if (verb === "put" && !lroMetadata.finalStep) {
// // PUT without last GET on resource
// useNewPollStrategy = true;
// } else if (
// verb === "post" &&
// lroMetadata.finalStep &&
// lroMetadata.finalStep.kind === "pollingSuccessProperty" &&
// lroMetadata.finalStep.target.name === "result"
// ) {
// // POST with final result in "result" property
// useNewPollStrategy = true;
// }

if (!useNewStrategy) {
// following 2 pattern in LroMetadata requires new polling strategy

if (httpOperation.verb === "put" && !lroMetadata.finalStep) {
// PUT without last GET on resource
useNewStrategy = true;
} else if (
httpOperation.verb === "post" &&
lroMetadata.finalStep &&
lroMetadata.finalStep.kind === "pollingSuccessProperty" &&
lroMetadata.finalStep.target.name === "result"
) {
// POST with final result in "result" property
useNewStrategy = true;
}
}

return useNewStrategy;
}

export function cloneOperationParameter(parameter: Parameter): Parameter {
Expand Down
2 changes: 1 addition & 1 deletion typespec-tests/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
"@typespec/openapi": ">=0.45.0 <1.0.0",
"@azure-tools/typespec-autorest": ">=0.31.0 <1.0.0",
"@azure-tools/cadl-ranch-specs": "0.16.1",
"@azure-tools/typespec-java": "file:/../typespec-extension/azure-tools-typespec-java-0.8.2.tgz"
"@azure-tools/typespec-java": "file:/../typespec-extension/azure-tools-typespec-java-0.8.3.tgz"
},
"devDependencies": {
"@typespec/prettier-plugin-typespec": ">=0.45.0 <1.0.0",
Expand Down