Skip to content

Commit 56fa394

Browse files
committed
Split openapi support in two modules, to avoid adding dependencies needed only for code-generation to project runtime classpath
1 parent 0bb5130 commit 56fa394

36 files changed

+99
-63
lines changed

core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/Integration.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ internal class Integration(private val notebook: Notebook, private val options:
181181
"org.jetbrains.kotlinx:dataframe-jdbc:$version",
182182
"org.jetbrains.kotlinx:dataframe-arrow:$version",
183183
"org.jetbrains.kotlinx:dataframe-openapi:$version",
184+
"org.jetbrains.kotlinx:dataframe-openapi-generator:$version"
184185
)
185186
}
186187

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
plugins {
2+
with(libs.plugins) {
3+
alias(kotlin.jvm)
4+
alias(publisher)
5+
alias(serialization)
6+
alias(kover)
7+
alias(ktlint)
8+
alias(jupyter.api)
9+
}
10+
}
11+
12+
group = "org.jetbrains.kotlinx"
13+
14+
val jupyterApiTCRepo: String by project
15+
16+
repositories {
17+
mavenLocal()
18+
mavenCentral()
19+
maven(jupyterApiTCRepo)
20+
}
21+
22+
dependencies {
23+
api(project(":core"))
24+
api(project(":dataframe-openapi"))
25+
26+
implementation(libs.sl4j)
27+
implementation(libs.kotlinLogging)
28+
implementation(libs.kotlin.reflect)
29+
implementation(libs.kotlinpoet)
30+
api(libs.swagger) {
31+
// Fix for Android
32+
exclude("jakarta.validation")
33+
}
34+
35+
testApi(project(":core"))
36+
testImplementation(libs.junit)
37+
testImplementation(libs.kotestAssertions) {
38+
exclude("org.jetbrains.kotlin", "kotlin-stdlib-jdk8")
39+
}
40+
}
41+
42+
kotlinPublications {
43+
publication {
44+
publicationName = "dataframeOpenApi"
45+
artifactId = project.name
46+
description = "OpenAPI code generation support for Kotlin Dataframe"
47+
packageName = artifactId
48+
}
49+
}
50+
51+
kotlin {
52+
explicitApi()
53+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package org.jetbrains.kotlinx.dataframe.io
2+
3+
import org.jetbrains.kotlinx.dataframe.codeGen.FieldType
4+
import org.jetbrains.kotlinx.dataframe.codeGen.Marker
5+
import org.jetbrains.kotlinx.dataframe.codeGen.MarkerVisibility
6+
import org.jetbrains.kotlinx.dataframe.codeGen.ValidFieldName
7+
8+
internal fun AdditionalProperty.Companion.getMarker(typeArguments: List<String>) =
9+
Marker(
10+
name = AdditionalProperty::class.qualifiedName!!,
11+
isOpen = false,
12+
fields = listOf(
13+
generatedFieldOf(
14+
fieldName = ValidFieldName.of(AdditionalProperty<*>::key.name),
15+
columnName = AdditionalProperty<*>::key.name,
16+
overrides = false,
17+
fieldType = FieldType.ValueFieldType(String::class.qualifiedName!!),
18+
),
19+
generatedFieldOf(
20+
fieldName = ValidFieldName.of(AdditionalProperty<*>::`value`.name),
21+
columnName = AdditionalProperty<*>::`value`.name,
22+
overrides = false,
23+
fieldType = FieldType.ValueFieldType(Any::class.qualifiedName!! + "?"),
24+
),
25+
),
26+
superMarkers = emptyList(),
27+
visibility = MarkerVisibility.EXPLICIT_PUBLIC,
28+
typeParameters = emptyList(),
29+
typeArguments = typeArguments,
30+
)

dataframe-openapi/build.gradle.kts

Lines changed: 4 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,18 @@
11
plugins {
2-
with(libs.plugins) {
3-
alias(kotlin.jvm)
4-
alias(publisher)
5-
alias(serialization)
6-
alias(kover)
7-
alias(ktlint)
8-
alias(jupyter.api)
9-
}
2+
alias(libs.plugins.kotlin.jvm)
3+
alias(libs.plugins.ktlint)
4+
alias(libs.plugins.publisher)
5+
alias(libs.plugins.jupyter.api)
106
}
117

128
group = "org.jetbrains.kotlinx"
139

14-
val jupyterApiTCRepo: String by project
15-
1610
repositories {
17-
mavenLocal()
1811
mavenCentral()
19-
maven(jupyterApiTCRepo)
2012
}
2113

2214
dependencies {
2315
api(project(":core"))
24-
25-
implementation(libs.sl4j)
26-
implementation(libs.kotlinLogging)
27-
implementation(libs.kotlin.reflect)
28-
implementation(libs.kotlinpoet)
29-
api(libs.swagger) {
30-
// Fix for Android
31-
exclude("jakarta.validation")
32-
}
33-
34-
testApi(project(":core"))
35-
testImplementation(libs.junit)
36-
testImplementation(libs.kotestAssertions) {
37-
exclude("org.jetbrains.kotlin", "kotlin-stdlib-jdk8")
38-
}
3916
}
4017

4118
kotlinPublications {

dataframe-openapi/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io/AdditionalProperty.kt

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,6 @@ package org.jetbrains.kotlinx.dataframe.io
22

33
import org.jetbrains.kotlinx.dataframe.annotations.DataSchema
44
import org.jetbrains.kotlinx.dataframe.api.KeyValueProperty
5-
import org.jetbrains.kotlinx.dataframe.codeGen.FieldType
6-
import org.jetbrains.kotlinx.dataframe.codeGen.Marker
7-
import org.jetbrains.kotlinx.dataframe.codeGen.MarkerVisibility
8-
import org.jetbrains.kotlinx.dataframe.codeGen.ValidFieldName
95

106
/**
117
* A [DataSchema] interface can implement this if it represents a map-like data schema (so key: value).
@@ -19,29 +15,5 @@ public interface AdditionalProperty<T> : KeyValueProperty<T> {
1915
/** Value of the property. */
2016
override val value: T
2117

22-
public companion object {
23-
internal fun getMarker(typeArguments: List<String>) =
24-
Marker(
25-
name = AdditionalProperty::class.qualifiedName!!,
26-
isOpen = false,
27-
fields = listOf(
28-
generatedFieldOf(
29-
fieldName = ValidFieldName.of(AdditionalProperty<*>::key.name),
30-
columnName = AdditionalProperty<*>::key.name,
31-
overrides = false,
32-
fieldType = FieldType.ValueFieldType(String::class.qualifiedName!!),
33-
),
34-
generatedFieldOf(
35-
fieldName = ValidFieldName.of(AdditionalProperty<*>::`value`.name),
36-
columnName = AdditionalProperty<*>::`value`.name,
37-
overrides = false,
38-
fieldType = FieldType.ValueFieldType(Any::class.qualifiedName!! + "?"),
39-
),
40-
),
41-
superMarkers = emptyList(),
42-
visibility = MarkerVisibility.EXPLICIT_PUBLIC,
43-
typeParameters = emptyList(),
44-
typeArguments = typeArguments,
45-
)
46-
}
18+
public companion object
4719
}

docs/StardustDocs/topics/gettingStartedGradleAdvanced.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ dependencies {
127127
implementation("org.jetbrains.kotlinx:dataframe-excel:%dataFrameVersion%")
128128
implementation("org.jetbrains.kotlinx:dataframe-jdbc:%dataFrameVersion%")
129129
implementation("org.jetbrains.kotlinx:dataframe-arrow:%dataFrameVersion%")
130-
implementation("org.jetbrains.kotlinx:dataframe-openapi:%dataFrameVersion%")
130+
implementation("org.jetbrains.kotlinx:dataframe-openapi-generator:%dataFrameVersion%")
131131
}
132132
```
133133

@@ -144,6 +144,7 @@ dependencies {
144144
implementation 'org.jetbrains.kotlinx:dataframe-jdbc:%dataFrameVersion%'
145145
implementation 'org.jetbrains.kotlinx:dataframe-arrow:%dataFrameVersion%'
146146
implementation 'org.jetbrains.kotlinx:dataframe-openapi:%dataFrameVersion%'
147+
implementation 'org.jetbrains.kotlinx:dataframe-openapi-generator:%dataFrameVersion%'
147148
}
148149
```
149150

plugins/dataframe-gradle-plugin/build.gradle.kts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ dependencies {
2020
api(libs.kotlin.reflect)
2121
implementation(project(":core"))
2222
implementation(project(":dataframe-arrow"))
23-
implementation(project(":dataframe-openapi"))
23+
implementation(project(":dataframe-openapi-generator"))
2424
implementation(project(":dataframe-excel"))
2525
implementation(project(":dataframe-jdbc"))
2626

@@ -116,12 +116,13 @@ val integrationTestTask = task<Test>("integrationTest") {
116116
dependsOn(":dataframe-arrow:publishToMavenLocal")
117117
dependsOn(":dataframe-excel:publishToMavenLocal")
118118
dependsOn(":dataframe-jdbc:publishToMavenLocal")
119+
dependsOn(":dataframe-openapi-generator:publishToMavenLocal")
119120
dependsOn(":dataframe-openapi:publishToMavenLocal")
120121
dependsOn(":publishApiPublicationToMavenLocal")
121122
dependsOn(":dataframe-arrow:publishDataframeArrowPublicationToMavenLocal")
122123
dependsOn(":dataframe-excel:publishDataframeExcelPublicationToMavenLocal")
123124
dependsOn(":dataframe-jdbc:publishDataframeJDBCPublicationToMavenLocal")
124-
dependsOn(":dataframe-openapi:publishDataframeOpenApiPublicationToMavenLocal")
125+
dependsOn(":dataframe-openapi-generator:publishDataframeOpenApiPublicationToMavenLocal")
125126
dependsOn(":plugins:symbol-processor:publishMavenPublicationToMavenLocal")
126127
dependsOn(":core:publishCorePublicationToMavenLocal")
127128
description = "Runs integration tests."

plugins/symbol-processor/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ group = "org.jetbrains.kotlinx.dataframe"
2020
dependencies {
2121
implementation(project(":core"))
2222
implementation(project(":dataframe-arrow"))
23-
implementation(project(":dataframe-openapi"))
23+
implementation(project(":dataframe-openapi-generator"))
2424
implementation(project(":dataframe-excel"))
2525
implementation(project(":dataframe-jdbc"))
2626
implementation(libs.ksp.api)

plugins/symbol-processor/src/test/kotlin/org/jetbrains/dataframe/ksp/DataFrameSymbolProcessorTest.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1153,7 +1153,7 @@ class DataFrameSymbolProcessorTest {
11531153
}
11541154
}
11551155

1156-
private val petstoreYaml = File("../../dataframe-openapi/src/test/resources/petstore.yaml")
1156+
private val petstoreYaml = File("../../dataframe-openapi-generator/src/test/resources/petstore.yaml")
11571157

11581158
@Test
11591159
fun `openApi yaml test`(): Unit =
@@ -1238,7 +1238,7 @@ class DataFrameSymbolProcessorTest {
12381238
}
12391239
}
12401240

1241-
private val apiGuruMetricsJson = File("../../dataframe-openapi/src/test/resources/apiGuruMetrics.json")
1241+
private val apiGuruMetricsJson = File("../../dataframe-openapi-generator/src/test/resources/apiGuruMetrics.json")
12421242

12431243
@Test
12441244
fun `non openApi json test 2`(): Unit =
@@ -1275,7 +1275,7 @@ class DataFrameSymbolProcessorTest {
12751275
}
12761276
}
12771277

1278-
private val petstoreJson = File("../../dataframe-openapi/src/test/resources/petstore.json")
1278+
private val petstoreJson = File("../../dataframe-openapi-generator/src/test/resources/petstore.json")
12791279

12801280
@Test
12811281
fun `openApi json test`(): Unit =

settings.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,4 @@ plugins {
4141
}
4242
include("dataframe-excel")
4343
include("core")
44+
include("dataframe-openapi-generator")

0 commit comments

Comments
 (0)