Skip to content

Commit 16feb28

Browse files
authored
Merge branch 'main' into dtayeh/SDK-1568
2 parents 36848a5 + db0d9fd commit 16feb28

File tree

8 files changed

+50
-45
lines changed

8 files changed

+50
-45
lines changed

.github/workflows/release-sdk.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
jdk: ${{ matrix.jdk }}
2323

2424
release-sdk:
25-
uses: ExpediaGroup/expediagroup-java-sdk/.github/workflows/selfserve-release-sdk.yaml@v20241013
25+
uses: ExpediaGroup/expediagroup-java-sdk/.github/workflows/selfserve-release-sdk.yaml@v20241125
2626
needs: [ run-examples ]
2727
secrets: inherit
2828
with:

customizations/generator/openapi/src/main/kotlin/com/expediagroup/sdk/generators/openapi/OpenApiSdkGenerator.kt

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,6 @@ class OpenApiSdkGenerator {
4040
"README.md",
4141
"ApiException.kt",
4242
"LinkableOperation.kt",
43-
"PropertyConstraintViolation.kt",
44-
"PropertyConstraintsValidator.kt",
45-
"PropertyConstraintViolationException.kt",
4643
"ApiAbstractions.kt"
4744
)
4845

@@ -147,27 +144,6 @@ class OpenApiSdkGenerator {
147144
"ApiException.kt"
148145
)
149146
)
150-
add(
151-
SupportingFile(
152-
"validation/propertyConstraintViolationException.mustache",
153-
"$packagePath/models/exception/",
154-
"PropertyConstraintViolationException.kt"
155-
)
156-
)
157-
add(
158-
SupportingFile(
159-
"validation/propertyConstraintViolation.mustache",
160-
"$packagePath/models/exception/",
161-
"PropertyConstraintViolation.kt"
162-
)
163-
)
164-
add(
165-
SupportingFile(
166-
"validation/propertyConstraintsValidator.mustache",
167-
"$packagePath/validation/",
168-
"PropertyConstraintsValidator.kt"
169-
)
170-
)
171147

172148
add(
173149
TemplateDefinition(

customizations/generator/openapi/src/main/resources/post-processor/assets/templates/get-lodging-listings-operation-params/rooms.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
fun rooms(rooms: List<Room>) =
22
apply {
3+
if (rooms.size > 8) {
4+
throw PropertyConstraintViolationException(
5+
constraintViolations = listOf("rooms: size must be between 0 and 8")
6+
)
7+
}
8+
39
rooms.elementAtOrNull(0)?.let {
410
this.room1Adults = it.adults
511
this.room1ChildAges = it.childAges?.map { item -> item.toString() }

customizations/generator/openapi/src/main/resources/post-processor/assets/templates/get-lodging-quotes-operation-params/rooms.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
fun rooms(rooms: List<Room>) =
22
apply {
3+
if (rooms.size > 8) {
4+
throw PropertyConstraintViolationException(
5+
constraintViolations = listOf("rooms: size must be between 0 and 8")
6+
)
7+
}
8+
39
rooms.elementAtOrNull(0)?.let {
410
this.room1Adults = it.adults
511
this.room1ChildAges = it.childAges?.map { item -> item.toString() }

customizations/generator/openapi/src/main/resources/templates/expediagroup-sdk/client.mustache

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ class {{clientClassname}}Client private constructor(clientConfiguration: XapClie
6767
}
6868

6969
appendHeaders(extraHeaders)
70-
validateConstraints(operation.requestBody)
7170
contentType(ContentType.Application.Json)
7271
setBody(operation.requestBody)
7372
}

customizations/generator/openapi/src/main/resources/templates/expediagroup-sdk/operation_params.mustache

Lines changed: 34 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,25 @@
33
{{#hasNonBodyParams}}
44
package com.expediagroup.sdk.{{namespace}}.operations
55

6+
import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException
67
import com.expediagroup.sdk.core.model.OperationParams
8+
79
import {{packageName}}.infrastructure.*
810
import com.fasterxml.jackson.annotation.JsonProperty
911
import com.fasterxml.jackson.databind.annotation.JsonDeserialize
1012
import io.ktor.http.Headers
1113
import io.ktor.http.Parameters
1214

15+
import javax.validation.constraints.Max
16+
import javax.validation.constraints.Min
17+
import javax.validation.constraints.NotNull
18+
import javax.validation.constraints.Pattern
19+
import javax.validation.constraints.Size
20+
import javax.validation.Valid
21+
import javax.validation.Validation
22+
23+
import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
24+
1325
/**
1426
{{#nonBodyParams}}
1527
{{#params}}
@@ -21,6 +33,7 @@
2133
data class {{classname}}Params(
2234
{{#nonBodyParams}}
2335
{{#params}}
36+
{{>models/constraints}}
2437
{{>modelMutable}} {{>client/apiParam}}{{^-last}}, {{/-last}}
2538
{{/params}}
2639
{{/nonBodyParams}}
@@ -67,32 +80,36 @@
6780
{{/nonBodyParams}}
6881

6982
fun build(): {{classname}}Params {
70-
{{#hasRequiredParams}}
71-
validateNullity()
72-
{{/hasRequiredParams}}
73-
74-
return {{classname}}Params(
83+
val params = {{classname}}Params(
7584
{{#nonBodyParams}}
7685
{{#params}}
7786
{{{paramName}}} = {{{paramName}}}{{#required}}!!{{/required}}{{^-last}},{{/-last}}
7887
{{/params}}
7988
{{/nonBodyParams}}
8089
)
90+
91+
validate(params)
92+
93+
return params
8194
}
8295

83-
{{#hasRequiredParams}}
84-
private fun validateNullity() {
85-
{{#nonBodyParams}}
86-
{{#params}}
87-
{{#required}}
88-
if ({{{paramName}}} == null) {
89-
throw NullPointerException("Required parameter {{{paramName}}} is missing")
90-
}
91-
{{/required}}
92-
{{/params}}
93-
{{/nonBodyParams}}
96+
private fun validate(params: {{classname}}Params) {
97+
val validator =
98+
Validation
99+
.byDefaultProvider()
100+
.configure()
101+
.messageInterpolator(ParameterMessageInterpolator())
102+
.buildValidatorFactory()
103+
.validator
104+
105+
val violations = validator.validate(params)
106+
107+
if (violations.isNotEmpty()) {
108+
throw PropertyConstraintViolationException(
109+
constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" }
110+
)
94111
}
95-
{{/hasRequiredParams}}
112+
}
96113
}
97114

98115
fun toBuilder() = Builder(

examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/lodging/AvailabilityCalendarsQuickStartScenario.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@
2020
import com.expediagroup.sdk.xap.models.AvailabilityCalendarResponse;
2121
import com.expediagroup.sdk.xap.operations.GetLodgingAvailabilityCalendarsOperation;
2222
import com.expediagroup.sdk.xap.operations.GetLodgingAvailabilityCalendarsOperationParams;
23-
import org.slf4j.Logger;
24-
import org.slf4j.LoggerFactory;
2523
import java.util.Arrays;
2624
import java.util.HashSet;
25+
import org.slf4j.Logger;
26+
import org.slf4j.LoggerFactory;
2727

2828
/**
2929
* This example demonstrates how to use Availability Calendar api with simple search.

specs/xap-sdp-v1.specs.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ paths:
5454
- ALL_REGIONS
5555
- BOUNDING_POLYGON
5656
- HOTEL_TO_REGION_HIERARCHY
57+
- ROOM_DETAILS
5758
example: SUMMARY
5859
- name: locale
5960
in: query

0 commit comments

Comments
 (0)