Skip to content

Commit 44eb00d

Browse files
dramaticllySteve Zhang
andauthored
open-api: Use openapi-generator-gradle-plugin for validating specification (#9344)
Co-authored-by: Steve Zhang <[email protected]>
1 parent 3b8fd90 commit 44eb00d

File tree

4 files changed

+54
-26
lines changed

4 files changed

+54
-26
lines changed

build.gradle

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ buildscript {
4141
classpath 'com.palantir.gradle.revapi:gradle-revapi:1.7.0'
4242
classpath 'com.gorylenko.gradle-git-properties:gradle-git-properties:2.4.1'
4343
classpath 'com.palantir.gradle.gitversion:gradle-git-version:3.0.0'
44+
classpath 'org.openapitools:openapi-generator-gradle-plugin:6.6.0'
4445
}
4546
}
4647

@@ -531,6 +532,13 @@ project(':iceberg-aws') {
531532
classpath = sourceSets.integration.runtimeClasspath
532533
jvmArgs += project.property('extraJvmArgs')
533534
}
535+
536+
def s3SignerSpec = "$projectDir/src/main/resources/s3-signer-open-api.yaml"
537+
tasks.register('validateS3SignerSpec', org.openapitools.generator.gradle.plugin.tasks.ValidateTask) {
538+
inputSpec.set(s3SignerSpec)
539+
recommend.set(true)
540+
}
541+
check.dependsOn('validateS3SignerSpec')
534542
}
535543

536544
project(':iceberg-azure') {
@@ -964,6 +972,15 @@ project(':iceberg-snowflake') {
964972
}
965973
}
966974

975+
project(':iceberg-open-api') {
976+
def restCatalogSpec = "$projectDir/rest-catalog-open-api.yaml"
977+
tasks.register('validateRESTCatalogSpec', org.openapitools.generator.gradle.plugin.tasks.ValidateTask) {
978+
inputSpec.set(restCatalogSpec)
979+
recommend.set(true)
980+
}
981+
check.dependsOn('validateRESTCatalogSpec')
982+
}
983+
967984
@Memoized
968985
boolean versionFileExists() {
969986
return file('version.txt').exists()

open-api/rest-catalog-open-api.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -424,7 +424,16 @@ class AssertDefaultSortOrderId(TableRequirement):
424424

425425

426426
class ViewRequirement(BaseModel):
427-
__root__: Any = Field(..., discriminator='type')
427+
type: str
428+
429+
430+
class AssertViewUUID(ViewRequirement):
431+
"""
432+
The view UUID must match the requirement's `uuid`
433+
"""
434+
435+
type: Literal['assert-view-uuid']
436+
uuid: str
428437

429438

430439
class RegisterTableRequest(BaseModel):

open-api/rest-catalog-open-api.yaml

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2632,26 +2632,26 @@ components:
26322632
propertyName: type
26332633
mapping:
26342634
assert-view-uuid: '#/components/schemas/AssertViewUUID'
2635-
type: object
2636-
required:
2637-
- type
2638-
properties:
2639-
type:
2640-
type: "string"
2635+
type: object
2636+
required:
2637+
- type
2638+
properties:
2639+
type:
2640+
type: "string"
26412641

2642-
AssertViewUUID:
2643-
allOf:
2644-
- $ref: "#/components/schemas/ViewRequirement"
2645-
description: The view UUID must match the requirement's `uuid`
2646-
required:
2647-
- type
2648-
- uuid
2649-
properties:
2650-
type:
2651-
type: string
2652-
enum: [ "assert-view-uuid" ]
2653-
uuid:
2654-
type: string
2642+
AssertViewUUID:
2643+
allOf:
2644+
- $ref: "#/components/schemas/ViewRequirement"
2645+
description: The view UUID must match the requirement's `uuid`
2646+
required:
2647+
- type
2648+
- uuid
2649+
properties:
2650+
type:
2651+
type: string
2652+
enum: [ "assert-view-uuid" ]
2653+
uuid:
2654+
type: string
26552655

26562656
LoadTableResult:
26572657
description: |
@@ -3363,12 +3363,12 @@ components:
33633363
application/json:
33643364
schema:
33653365
$ref: '#/components/schemas/IcebergErrorResponse'
3366-
example: {
3367-
"error": {
3368-
"message": "The server does not support this operation",
3369-
"type": "UnsupportedOperationException",
3370-
"code": 406
3371-
} }
3366+
example: {
3367+
"error": {
3368+
"message": "The server does not support this operation",
3369+
"type": "UnsupportedOperationException",
3370+
"code": 406
3371+
} }
33723372

33733373
CreateNamespaceResponse:
33743374
description:

settings.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ include 'dell'
4242
include 'snowflake'
4343
include 'delta-lake'
4444
include 'kafka-connect'
45+
include 'open-api'
4546

4647
project(':bom').name = 'iceberg-bom'
4748
project(':api').name = 'iceberg-api'
@@ -67,6 +68,7 @@ project(':dell').name = 'iceberg-dell'
6768
project(':snowflake').name = 'iceberg-snowflake'
6869
project(':delta-lake').name = 'iceberg-delta-lake'
6970
project(':kafka-connect').name = 'iceberg-kafka-connect'
71+
project(':open-api').name = 'iceberg-open-api'
7072

7173
if (null != System.getProperty("allVersions")) {
7274
System.setProperty("flinkVersions", System.getProperty("knownFlinkVersions"))

0 commit comments

Comments
 (0)