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
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
changeKind: feature
packages:
- "@typespec/http-client-java"
---

Support `DurationKnownEncoding.milliseconds` in http-client-java. Duration properties encoded as milliseconds now use `Duration` as the client type, with proper conversion to/from integer or float milliseconds on the wire.
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,12 @@ export interface DurationSchema extends PrimitiveSchema {
/** the schema type */
type: SchemaType.Duration;

format: "duration-rfc3339" | "seconds-integer" | "seconds-number";
format:
| "duration-rfc3339"
| "seconds-integer"
| "seconds-number"
| "milliseconds-integer"
| "milliseconds-number";
}

export class DurationSchema extends PrimitiveSchema implements DurationSchema {
Expand Down
12 changes: 11 additions & 1 deletion packages/http-client-java/emitter/src/type-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ import { DurationSchema } from "./common/schemas/time.js";
import { SchemaContext } from "./common/schemas/usage.js";
import { getNamespace } from "./utils.js";

export const DURATION_KNOWN_ENCODING = ["ISO8601", "seconds"];
export const DURATION_KNOWN_ENCODING = ["ISO8601", "seconds", "milliseconds"];
export const DATETIME_KNOWN_ENCODING = ["rfc3339", "rfc7231", "unixTimestamp"];
export const BYTES_KNOWN_ENCODING = ["base64", "base64url"];

Expand Down Expand Up @@ -139,6 +139,16 @@ export function getDurationFormat(type: SdkDurationType): DurationSchema["format
`Unrecognized scalar type used by duration encoded as seconds: '${type.kind}'.`,
);
}
} else if (type.encode === "milliseconds") {
if (isSdkIntKind(type.wireType.kind)) {
format = "milliseconds-integer";
} else if (isSdkFloatKind(type.wireType.kind)) {
format = "milliseconds-number";
} else {
throw new Error(
`Unrecognized scalar type used by duration encoded as milliseconds: '${type.kind}'.`,
);
}
}
return format;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,7 @@ public void float64Seconds(Duration duration) {
*/
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public Response<Void> int32MillisecondsWithResponse(int duration, RequestContext requestContext) {
public Response<Void> int32MillisecondsWithResponse(Duration duration, RequestContext requestContext) {
return this.instrumentation.instrumentWithResponse("Encode.Duration.Header.int32Milliseconds", requestContext,
updatedContext -> this.serviceClient.int32MillisecondsWithResponse(duration, updatedContext));
}
Expand All @@ -312,7 +312,7 @@ public Response<Void> int32MillisecondsWithResponse(int duration, RequestContext
*/
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public void int32Milliseconds(int duration) {
public void int32Milliseconds(Duration duration) {
int32MillisecondsWithResponse(duration, RequestContext.none());
}

Expand All @@ -328,7 +328,7 @@ public void int32Milliseconds(int duration) {
*/
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public Response<Void> int32MillisecondsLargerUnitWithResponse(int duration, RequestContext requestContext) {
public Response<Void> int32MillisecondsLargerUnitWithResponse(Duration duration, RequestContext requestContext) {
return this.instrumentation.instrumentWithResponse("Encode.Duration.Header.int32MillisecondsLargerUnit",
requestContext,
updatedContext -> this.serviceClient.int32MillisecondsLargerUnitWithResponse(duration, updatedContext));
Expand All @@ -344,7 +344,7 @@ public Response<Void> int32MillisecondsLargerUnitWithResponse(int duration, Requ
*/
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public void int32MillisecondsLargerUnit(int duration) {
public void int32MillisecondsLargerUnit(Duration duration) {
int32MillisecondsLargerUnitWithResponse(duration, RequestContext.none());
}

Expand All @@ -360,7 +360,7 @@ public void int32MillisecondsLargerUnit(int duration) {
*/
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public Response<Void> floatMillisecondsWithResponse(double duration, RequestContext requestContext) {
public Response<Void> floatMillisecondsWithResponse(Duration duration, RequestContext requestContext) {
return this.instrumentation.instrumentWithResponse("Encode.Duration.Header.floatMilliseconds", requestContext,
updatedContext -> this.serviceClient.floatMillisecondsWithResponse(duration, updatedContext));
}
Expand All @@ -375,7 +375,7 @@ public Response<Void> floatMillisecondsWithResponse(double duration, RequestCont
*/
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public void floatMilliseconds(double duration) {
public void floatMilliseconds(Duration duration) {
floatMillisecondsWithResponse(duration, RequestContext.none());
}

Expand All @@ -391,7 +391,7 @@ public void floatMilliseconds(double duration) {
*/
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public Response<Void> floatMillisecondsLargerUnitWithResponse(double duration, RequestContext requestContext) {
public Response<Void> floatMillisecondsLargerUnitWithResponse(Duration duration, RequestContext requestContext) {
return this.instrumentation.instrumentWithResponse("Encode.Duration.Header.floatMillisecondsLargerUnit",
requestContext,
updatedContext -> this.serviceClient.floatMillisecondsLargerUnitWithResponse(duration, updatedContext));
Expand All @@ -407,7 +407,7 @@ public Response<Void> floatMillisecondsLargerUnitWithResponse(double duration, R
*/
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public void floatMillisecondsLargerUnit(double duration) {
public void floatMillisecondsLargerUnit(Duration duration) {
floatMillisecondsLargerUnitWithResponse(duration, RequestContext.none());
}

Expand All @@ -423,7 +423,7 @@ public void floatMillisecondsLargerUnit(double duration) {
*/
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public Response<Void> float64MillisecondsWithResponse(double duration, RequestContext requestContext) {
public Response<Void> float64MillisecondsWithResponse(Duration duration, RequestContext requestContext) {
return this.instrumentation.instrumentWithResponse("Encode.Duration.Header.float64Milliseconds", requestContext,
updatedContext -> this.serviceClient.float64MillisecondsWithResponse(duration, updatedContext));
}
Expand All @@ -438,7 +438,7 @@ public Response<Void> float64MillisecondsWithResponse(double duration, RequestCo
*/
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public void float64Milliseconds(double duration) {
public void float64Milliseconds(Duration duration) {
float64MillisecondsWithResponse(duration, RequestContext.none());
}

Expand All @@ -454,7 +454,7 @@ public void float64Milliseconds(double duration) {
*/
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public Response<Void> int32MillisecondsArrayWithResponse(List<Integer> duration, RequestContext requestContext) {
public Response<Void> int32MillisecondsArrayWithResponse(List<Duration> duration, RequestContext requestContext) {
return this.instrumentation.instrumentWithResponse("Encode.Duration.Header.int32MillisecondsArray",
requestContext,
updatedContext -> this.serviceClient.int32MillisecondsArrayWithResponse(duration, updatedContext));
Expand All @@ -470,7 +470,7 @@ public Response<Void> int32MillisecondsArrayWithResponse(List<Integer> duration,
*/
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public void int32MillisecondsArray(List<Integer> duration) {
public void int32MillisecondsArray(List<Duration> duration) {
int32MillisecondsArrayWithResponse(duration, RequestContext.none());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ public void float64Seconds(Duration input) {
*/
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public Response<Void> int32MillisecondsWithResponse(int input, RequestContext requestContext) {
public Response<Void> int32MillisecondsWithResponse(Duration input, RequestContext requestContext) {
return this.instrumentation.instrumentWithResponse("Encode.Duration.Query.int32Milliseconds", requestContext,
updatedContext -> this.serviceClient.int32MillisecondsWithResponse(input, updatedContext));
}
Expand All @@ -281,7 +281,7 @@ public Response<Void> int32MillisecondsWithResponse(int input, RequestContext re
*/
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public void int32Milliseconds(int input) {
public void int32Milliseconds(Duration input) {
int32MillisecondsWithResponse(input, RequestContext.none());
}

Expand All @@ -297,7 +297,7 @@ public void int32Milliseconds(int input) {
*/
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public Response<Void> int32MillisecondsLargerUnitWithResponse(int input, RequestContext requestContext) {
public Response<Void> int32MillisecondsLargerUnitWithResponse(Duration input, RequestContext requestContext) {
return this.instrumentation.instrumentWithResponse("Encode.Duration.Query.int32MillisecondsLargerUnit",
requestContext,
updatedContext -> this.serviceClient.int32MillisecondsLargerUnitWithResponse(input, updatedContext));
Expand All @@ -313,7 +313,7 @@ public Response<Void> int32MillisecondsLargerUnitWithResponse(int input, Request
*/
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public void int32MillisecondsLargerUnit(int input) {
public void int32MillisecondsLargerUnit(Duration input) {
int32MillisecondsLargerUnitWithResponse(input, RequestContext.none());
}

Expand All @@ -329,7 +329,7 @@ public void int32MillisecondsLargerUnit(int input) {
*/
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public Response<Void> floatMillisecondsWithResponse(double input, RequestContext requestContext) {
public Response<Void> floatMillisecondsWithResponse(Duration input, RequestContext requestContext) {
return this.instrumentation.instrumentWithResponse("Encode.Duration.Query.floatMilliseconds", requestContext,
updatedContext -> this.serviceClient.floatMillisecondsWithResponse(input, updatedContext));
}
Expand All @@ -344,7 +344,7 @@ public Response<Void> floatMillisecondsWithResponse(double input, RequestContext
*/
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public void floatMilliseconds(double input) {
public void floatMilliseconds(Duration input) {
floatMillisecondsWithResponse(input, RequestContext.none());
}

Expand All @@ -360,7 +360,7 @@ public void floatMilliseconds(double input) {
*/
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public Response<Void> floatMillisecondsLargerUnitWithResponse(double input, RequestContext requestContext) {
public Response<Void> floatMillisecondsLargerUnitWithResponse(Duration input, RequestContext requestContext) {
return this.instrumentation.instrumentWithResponse("Encode.Duration.Query.floatMillisecondsLargerUnit",
requestContext,
updatedContext -> this.serviceClient.floatMillisecondsLargerUnitWithResponse(input, updatedContext));
Expand All @@ -376,7 +376,7 @@ public Response<Void> floatMillisecondsLargerUnitWithResponse(double input, Requ
*/
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public void floatMillisecondsLargerUnit(double input) {
public void floatMillisecondsLargerUnit(Duration input) {
floatMillisecondsLargerUnitWithResponse(input, RequestContext.none());
}

Expand All @@ -392,7 +392,7 @@ public void floatMillisecondsLargerUnit(double input) {
*/
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public Response<Void> float64MillisecondsWithResponse(double input, RequestContext requestContext) {
public Response<Void> float64MillisecondsWithResponse(Duration input, RequestContext requestContext) {
return this.instrumentation.instrumentWithResponse("Encode.Duration.Query.float64Milliseconds", requestContext,
updatedContext -> this.serviceClient.float64MillisecondsWithResponse(input, updatedContext));
}
Expand All @@ -407,7 +407,7 @@ public Response<Void> float64MillisecondsWithResponse(double input, RequestConte
*/
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public void float64Milliseconds(double input) {
public void float64Milliseconds(Duration input) {
float64MillisecondsWithResponse(input, RequestContext.none());
}

Expand Down Expand Up @@ -454,7 +454,7 @@ public void int32SecondsArray(List<Duration> input) {
*/
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public Response<Void> int32MillisecondsArrayWithResponse(List<Integer> input, RequestContext requestContext) {
public Response<Void> int32MillisecondsArrayWithResponse(List<Duration> input, RequestContext requestContext) {
return this.instrumentation.instrumentWithResponse("Encode.Duration.Query.int32MillisecondsArray",
requestContext,
updatedContext -> this.serviceClient.int32MillisecondsArrayWithResponse(input, updatedContext));
Expand All @@ -470,7 +470,7 @@ public Response<Void> int32MillisecondsArrayWithResponse(List<Integer> input, Re
*/
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public void int32MillisecondsArray(List<Integer> input) {
public void int32MillisecondsArray(List<Duration> input) {
int32MillisecondsArrayWithResponse(input, RequestContext.none());
}
}
Loading