From 99fedb0114d2bd2a41f0b015b680c22d25ad1319 Mon Sep 17 00:00:00 2001 From: Matas Lauzadis Date: Fri, 20 Sep 2024 10:46:09 -0400 Subject: [PATCH 1/9] Build succeeds! --- hll/build.gradle.kts | 2 + .../codegen/model/MapperTypes.kt | 172 +++++++++--------- .../build.gradle.kts | 70 +++++++ .../operations/HighLevelOpsProcessor.kt | 0 .../HighLevelOpsProcessorProvider.kt | 0 .../operations/model/ItemSourceKind.kt | 0 .../operations/model/MemberCodegenBehavior.kt | 0 .../operations/model/ModelAttributes.kt | 0 .../codegen/operations/model/Operation.kt | 0 .../codegen/operations/model/Pagination.kt | 0 .../codegen/operations/model/Structure.kt | 0 .../operations/rendering/DataTypeGenerator.kt | 0 .../operations/rendering/HighLevelRenderer.kt | 0 .../operations/rendering/OperationRenderer.kt | 0 .../rendering/OperationsTypeRenderer.kt | 0 .../operations/rendering/PaginatorRenderer.kt | 0 ...otlin.hll.codegen.model.ModelParsingPlugin | 0 ...ols.ksp.processing.SymbolProcessorProvider | 1 - .../build.gradle.kts | 70 +++++++ .../annotations/AnnotationsProcessor.kt | 0 .../AnnotationsProcessorOptions.kt | 0 .../AnnotationsProcessorProvider.kt | 0 .../rendering/HighLevelRenderer.kt | 0 .../annotations/rendering/SchemaAttributes.kt | 0 .../annotations/rendering/SchemaRenderer.kt | 2 +- ...ols.ksp.processing.SymbolProcessorProvider | 2 + .../build.gradle.kts | 4 +- .../plugins/SchemaGeneratorPlugin.kt | 2 +- .../dynamodb-mapper/build.gradle.kts | 6 +- .../build.gradle.kts | 2 +- settings.gradle.kts | 2 + 31 files changed, 240 insertions(+), 95 deletions(-) create mode 100644 hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/build.gradle.kts rename hll/dynamodb-mapper/{dynamodb-mapper-codegen => dynamodb-mapper-ops-codegen}/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/HighLevelOpsProcessor.kt (100%) rename hll/dynamodb-mapper/{dynamodb-mapper-codegen => dynamodb-mapper-ops-codegen}/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/HighLevelOpsProcessorProvider.kt (100%) rename hll/dynamodb-mapper/{dynamodb-mapper-codegen => dynamodb-mapper-ops-codegen}/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/model/ItemSourceKind.kt (100%) rename hll/dynamodb-mapper/{dynamodb-mapper-codegen => dynamodb-mapper-ops-codegen}/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/model/MemberCodegenBehavior.kt (100%) rename hll/dynamodb-mapper/{dynamodb-mapper-codegen => dynamodb-mapper-ops-codegen}/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/model/ModelAttributes.kt (100%) rename hll/dynamodb-mapper/{dynamodb-mapper-codegen => dynamodb-mapper-ops-codegen}/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/model/Operation.kt (100%) rename hll/dynamodb-mapper/{dynamodb-mapper-codegen => dynamodb-mapper-ops-codegen}/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/model/Pagination.kt (100%) rename hll/dynamodb-mapper/{dynamodb-mapper-codegen => dynamodb-mapper-ops-codegen}/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/model/Structure.kt (100%) rename hll/dynamodb-mapper/{dynamodb-mapper-codegen => dynamodb-mapper-ops-codegen}/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/rendering/DataTypeGenerator.kt (100%) rename hll/dynamodb-mapper/{dynamodb-mapper-codegen => dynamodb-mapper-ops-codegen}/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/rendering/HighLevelRenderer.kt (100%) rename hll/dynamodb-mapper/{dynamodb-mapper-codegen => dynamodb-mapper-ops-codegen}/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/rendering/OperationRenderer.kt (100%) rename hll/dynamodb-mapper/{dynamodb-mapper-codegen => dynamodb-mapper-ops-codegen}/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/rendering/OperationsTypeRenderer.kt (100%) rename hll/dynamodb-mapper/{dynamodb-mapper-codegen => dynamodb-mapper-ops-codegen}/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/rendering/PaginatorRenderer.kt (100%) rename hll/dynamodb-mapper/{dynamodb-mapper-codegen => dynamodb-mapper-ops-codegen}/src/main/resources/META-INF/services/aws.sdk.kotlin.hll.codegen.model.ModelParsingPlugin (100%) rename hll/dynamodb-mapper/{dynamodb-mapper-codegen => dynamodb-mapper-ops-codegen}/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider (50%) create mode 100644 hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/build.gradle.kts rename hll/dynamodb-mapper/{dynamodb-mapper-codegen => dynamodb-mapper-schema-codegen}/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/AnnotationsProcessor.kt (100%) rename hll/dynamodb-mapper/{dynamodb-mapper-codegen => dynamodb-mapper-schema-codegen}/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/AnnotationsProcessorOptions.kt (100%) rename hll/dynamodb-mapper/{dynamodb-mapper-codegen => dynamodb-mapper-schema-codegen}/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/AnnotationsProcessorProvider.kt (100%) rename hll/dynamodb-mapper/{dynamodb-mapper-codegen => dynamodb-mapper-schema-codegen}/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/HighLevelRenderer.kt (100%) rename hll/dynamodb-mapper/{dynamodb-mapper-codegen => dynamodb-mapper-schema-codegen}/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/SchemaAttributes.kt (100%) rename hll/dynamodb-mapper/{dynamodb-mapper-codegen => dynamodb-mapper-schema-codegen}/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/SchemaRenderer.kt (99%) create mode 100644 hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider diff --git a/hll/build.gradle.kts b/hll/build.gradle.kts index a2e016b1afa..0320cb919f7 100644 --- a/hll/build.gradle.kts +++ b/hll/build.gradle.kts @@ -96,6 +96,8 @@ apiValidation { "hll-codegen", "dynamodb-mapper-annotation-processor-test", "dynamodb-mapper-codegen", + "dynamodb-mapper-ops-codegen", + "dynamodb-mapper-schema-codegen", "dynamodb-mapper-schema-generator-plugin-test", ).filter { it in availableSubprojects } // Some projects may not be in the build depending on bootstrapping } diff --git a/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/model/MapperTypes.kt b/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/model/MapperTypes.kt index 0b137560172..204b9cb24fd 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/model/MapperTypes.kt +++ b/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/model/MapperTypes.kt @@ -8,125 +8,125 @@ import aws.sdk.kotlin.hll.codegen.model.Types /** * A container object for various DynamoDbMapper [Type] instances */ -internal object MapperTypes { +public object MapperTypes { // Low-level types - val AttributeValue = TypeRef(MapperPkg.Ll.Model, "AttributeValue") - val AttributeMap = Types.Kotlin.map(Types.Kotlin.String, AttributeValue) + public val AttributeValue: TypeRef = TypeRef(MapperPkg.Ll.Model, "AttributeValue") + public val AttributeMap: TypeRef = Types.Kotlin.map(Types.Kotlin.String, AttributeValue) // High-level types - val DynamoDbMapper = TypeRef(MapperPkg.Hl.Base, "DynamoDbMapper") + public val DynamoDbMapper: TypeRef = TypeRef(MapperPkg.Hl.Base, "DynamoDbMapper") - object Annotations { - val ManualPagination = TypeRef(MapperPkg.Hl.Annotations, "ManualPagination") + public object Annotations { + public val ManualPagination: TypeRef = TypeRef(MapperPkg.Hl.Annotations, "ManualPagination") } - object Items { - fun itemSchema(typeVar: String) = + public object Items { + public fun itemSchema(typeVar: String): TypeRef = TypeRef(MapperPkg.Hl.Items, "ItemSchema", genericArgs = listOf(TypeVar(typeVar))) - fun itemSchemaPartitionKey(objectType: TypeRef, pkType: TypeRef) = + public fun itemSchemaPartitionKey(objectType: TypeRef, pkType: TypeRef): TypeRef = TypeRef(MapperPkg.Hl.Items, "ItemSchema.PartitionKey", genericArgs = listOf(objectType, pkType)) - fun itemSchemaCompositeKey(objectType: TypeRef, pkType: TypeRef, skType: TypeRef) = + public fun itemSchemaCompositeKey(objectType: TypeRef, pkType: TypeRef, skType: TypeRef): TypeRef = TypeRef(MapperPkg.Hl.Items, "ItemSchema.CompositeKey", genericArgs = listOf(objectType, pkType, skType)) - fun keySpec(keyType: TypeRef) = TypeRef(MapperPkg.Hl.Items, "KeySpec", genericArgs = listOf(keyType)) - val KeySpecByteArray = TypeRef(MapperPkg.Hl.Items, "KeySpec.ByteArray") - val KeySpecNumber = TypeRef(MapperPkg.Hl.Items, "KeySpec.Number") - val KeySpecString = TypeRef(MapperPkg.Hl.Items, "KeySpec.String") - val AttributeDescriptor = TypeRef(MapperPkg.Hl.Items, "AttributeDescriptor") + public fun keySpec(keyType: TypeRef): TypeRef = TypeRef(MapperPkg.Hl.Items, "KeySpec", genericArgs = listOf(keyType)) + public val KeySpecByteArray: TypeRef = TypeRef(MapperPkg.Hl.Items, "KeySpec.ByteArray") + public val KeySpecNumber: TypeRef = TypeRef(MapperPkg.Hl.Items, "KeySpec.Number") + public val KeySpecString: TypeRef = TypeRef(MapperPkg.Hl.Items, "KeySpec.String") + public val AttributeDescriptor: TypeRef = TypeRef(MapperPkg.Hl.Items, "AttributeDescriptor") - fun itemConverter(objectType: TypeRef) = + public fun itemConverter(objectType: TypeRef): TypeRef = TypeRef(MapperPkg.Hl.Items, "ItemConverter", genericArgs = listOf(objectType)) - val SimpleItemConverter = TypeRef(MapperPkg.Hl.Items, "SimpleItemConverter") + public val SimpleItemConverter: TypeRef = TypeRef(MapperPkg.Hl.Items, "SimpleItemConverter") } - object Model { - fun tablePartitionKey(objectType: TypeRef, pkType: TypeRef) = TypeRef( + public object Model { + public fun tablePartitionKey(objectType: TypeRef, pkType: TypeRef): TypeRef = TypeRef( MapperPkg.Hl.Model, "Table.PartitionKey", genericArgs = listOf(objectType, pkType), ) - fun tableCompositeKey(objectType: TypeRef, pkType: TypeRef, skType: TypeRef) = TypeRef( + public fun tableCompositeKey(objectType: TypeRef, pkType: TypeRef, skType: TypeRef): TypeRef = TypeRef( MapperPkg.Hl.Model, "Table.CompositeKey", genericArgs = listOf(objectType, pkType, skType), ) - val toItem = TypeRef(MapperPkg.Hl.Model, "toItem") + public val toItem: TypeRef = TypeRef(MapperPkg.Hl.Model, "toItem") } - object Values { - fun valueConverter(value: Type) = TypeRef(MapperPkg.Hl.Values, "ValueConverter", genericArgs = listOf(value)) - val ItemToValueConverter = TypeRef(MapperPkg.Hl.Values, "ItemToValueConverter") - - object Collections { - val ListConverter = TypeRef(MapperPkg.Hl.CollectionValues, "ListConverter") - val MapConverter = TypeRef(MapperPkg.Hl.CollectionValues, "MapConverter") - - val StringSetConverter = TypeRef(MapperPkg.Hl.CollectionValues, "StringSetConverter") - val CharSetConverter = TypeRef(MapperPkg.Hl.CollectionValues, "CharSetConverter") - val CharArraySetConverter = TypeRef(MapperPkg.Hl.CollectionValues, "CharArraySetConverter") - - val ByteSetConverter = TypeRef(MapperPkg.Hl.CollectionValues, "ByteSetConverter") - val DoubleSetConverter = TypeRef(MapperPkg.Hl.CollectionValues, "DoubleSetConverter") - val FloatSetConverter = TypeRef(MapperPkg.Hl.CollectionValues, "FloatSetConverter") - val IntSetConverter = TypeRef(MapperPkg.Hl.CollectionValues, "IntSetConverter") - val LongSetConverter = TypeRef(MapperPkg.Hl.CollectionValues, "LongSetConverter") - val ShortSetConverter = TypeRef(MapperPkg.Hl.CollectionValues, "ShortSetConverter") - - val UByteSetConverter = TypeRef(MapperPkg.Hl.CollectionValues, "UByteSetConverter") - val UIntSetConverter = TypeRef(MapperPkg.Hl.CollectionValues, "UIntSetConverter") - val ULongSetConverter = TypeRef(MapperPkg.Hl.CollectionValues, "ULongSetConverter") - val UShortSetConverter = TypeRef(MapperPkg.Hl.CollectionValues, "UShortSetConverter") + public object Values { + public fun valueConverter(value: Type): TypeRef = TypeRef(MapperPkg.Hl.Values, "ValueConverter", genericArgs = listOf(value)) + public val ItemToValueConverter: TypeRef = TypeRef(MapperPkg.Hl.Values, "ItemToValueConverter") + + public object Collections { + public val ListConverter: TypeRef = TypeRef(MapperPkg.Hl.CollectionValues, "ListConverter") + public val MapConverter: TypeRef = TypeRef(MapperPkg.Hl.CollectionValues, "MapConverter") + + public val StringSetConverter: TypeRef = TypeRef(MapperPkg.Hl.CollectionValues, "StringSetConverter") + public val CharSetConverter: TypeRef = TypeRef(MapperPkg.Hl.CollectionValues, "CharSetConverter") + public val CharArraySetConverter: TypeRef = TypeRef(MapperPkg.Hl.CollectionValues, "CharArraySetConverter") + + public val ByteSetConverter: TypeRef = TypeRef(MapperPkg.Hl.CollectionValues, "ByteSetConverter") + public val DoubleSetConverter: TypeRef = TypeRef(MapperPkg.Hl.CollectionValues, "DoubleSetConverter") + public val FloatSetConverter: TypeRef = TypeRef(MapperPkg.Hl.CollectionValues, "FloatSetConverter") + public val IntSetConverter: TypeRef = TypeRef(MapperPkg.Hl.CollectionValues, "IntSetConverter") + public val LongSetConverter: TypeRef = TypeRef(MapperPkg.Hl.CollectionValues, "LongSetConverter") + public val ShortSetConverter: TypeRef = TypeRef(MapperPkg.Hl.CollectionValues, "ShortSetConverter") + + public val UByteSetConverter: TypeRef = TypeRef(MapperPkg.Hl.CollectionValues, "UByteSetConverter") + public val UIntSetConverter: TypeRef = TypeRef(MapperPkg.Hl.CollectionValues, "UIntSetConverter") + public val ULongSetConverter: TypeRef = TypeRef(MapperPkg.Hl.CollectionValues, "ULongSetConverter") + public val UShortSetConverter: TypeRef = TypeRef(MapperPkg.Hl.CollectionValues, "UShortSetConverter") } - object Scalars { - fun enumConverter(enumType: Type) = TypeRef(MapperPkg.Hl.ScalarValues, "EnumConverter", genericArgs = listOf(enumType)) - - val BooleanConverter = TypeRef(MapperPkg.Hl.ScalarValues, "BooleanConverter") - val StringConverter = TypeRef(MapperPkg.Hl.ScalarValues, "StringConverter") - val CharConverter = TypeRef(MapperPkg.Hl.ScalarValues, "CharConverter") - val CharArrayConverter = TypeRef(MapperPkg.Hl.ScalarValues, "CharArrayConverter") - - val ByteConverter = TypeRef(MapperPkg.Hl.ScalarValues, "ByteConverter") - val ByteArrayConverter = TypeRef(MapperPkg.Hl.ScalarValues, "ByteArrayConverter") - val DoubleConverter = TypeRef(MapperPkg.Hl.ScalarValues, "DoubleConverter") - val FloatConverter = TypeRef(MapperPkg.Hl.ScalarValues, "FloatConverter") - val IntConverter = TypeRef(MapperPkg.Hl.ScalarValues, "IntConverter") - val LongConverter = TypeRef(MapperPkg.Hl.ScalarValues, "LongConverter") - val ShortConverter = TypeRef(MapperPkg.Hl.ScalarValues, "ShortConverter") - val UByteConverter = TypeRef(MapperPkg.Hl.ScalarValues, "UByteConverter") - val UIntConverter = TypeRef(MapperPkg.Hl.ScalarValues, "UIntConverter") - val ULongConverter = TypeRef(MapperPkg.Hl.ScalarValues, "ULongConverter") - val UShortConverter = TypeRef(MapperPkg.Hl.ScalarValues, "UShortConverter") - - val BooleanToStringConverter = TypeRef(MapperPkg.Hl.ScalarValues, "BooleanToStringConverter") - val CharArrayToStringConverter = TypeRef(MapperPkg.Hl.ScalarValues, "TextConverters.CharArrayToStringConverter") - val CharToStringConverter = TypeRef(MapperPkg.Hl.ScalarValues, "TextConverters.CharToStringConverter") - val StringToStringConverter = TypeRef(MapperPkg.Hl.ScalarValues, "TextConverters.StringToStringConverter") - val ByteToStringConverter = TypeRef(MapperPkg.Hl.ScalarValues, "NumberConverters.ByteToStringConverter") - val DoubleToStringConverter = TypeRef(MapperPkg.Hl.ScalarValues, "NumberConverters.DoubleToStringConverter") - val FloatToStringConverter = TypeRef(MapperPkg.Hl.ScalarValues, "NumberConverters.FloatToStringConverter") - val IntToStringConverter = TypeRef(MapperPkg.Hl.ScalarValues, "NumberConverters.IntToStringConverter") - val LongToStringConverter = TypeRef(MapperPkg.Hl.ScalarValues, "NumberConverters.LongToStringConverter") - val ShortToStringConverter = TypeRef(MapperPkg.Hl.ScalarValues, "NumberConverters.ShortToStringConverter") - val UByteToStringConverter = TypeRef(MapperPkg.Hl.ScalarValues, "NumberConverters.UByteToStringConverter") - val UIntToStringConverter = TypeRef(MapperPkg.Hl.ScalarValues, "NumberConverters.UIntToStringConverter") - val ULongToStringConverter = TypeRef(MapperPkg.Hl.ScalarValues, "NumberConverters.ULongToStringConverter") - val UShortToStringConverter = TypeRef(MapperPkg.Hl.ScalarValues, "NumberConverters.UShortToStringConverter") + public object Scalars { + public fun enumConverter(enumType: Type): TypeRef = TypeRef(MapperPkg.Hl.ScalarValues, "EnumConverter", genericArgs = listOf(enumType)) + + public val BooleanConverter: TypeRef = TypeRef(MapperPkg.Hl.ScalarValues, "BooleanConverter") + public val StringConverter: TypeRef = TypeRef(MapperPkg.Hl.ScalarValues, "StringConverter") + public val CharConverter: TypeRef = TypeRef(MapperPkg.Hl.ScalarValues, "CharConverter") + public val CharArrayConverter: TypeRef = TypeRef(MapperPkg.Hl.ScalarValues, "CharArrayConverter") + + public val ByteConverter: TypeRef = TypeRef(MapperPkg.Hl.ScalarValues, "ByteConverter") + public val ByteArrayConverter: TypeRef = TypeRef(MapperPkg.Hl.ScalarValues, "ByteArrayConverter") + public val DoubleConverter: TypeRef = TypeRef(MapperPkg.Hl.ScalarValues, "DoubleConverter") + public val FloatConverter: TypeRef = TypeRef(MapperPkg.Hl.ScalarValues, "FloatConverter") + public val IntConverter: TypeRef = TypeRef(MapperPkg.Hl.ScalarValues, "IntConverter") + public val LongConverter: TypeRef = TypeRef(MapperPkg.Hl.ScalarValues, "LongConverter") + public val ShortConverter: TypeRef = TypeRef(MapperPkg.Hl.ScalarValues, "ShortConverter") + public val UByteConverter: TypeRef = TypeRef(MapperPkg.Hl.ScalarValues, "UByteConverter") + public val UIntConverter: TypeRef = TypeRef(MapperPkg.Hl.ScalarValues, "UIntConverter") + public val ULongConverter: TypeRef = TypeRef(MapperPkg.Hl.ScalarValues, "ULongConverter") + public val UShortConverter: TypeRef = TypeRef(MapperPkg.Hl.ScalarValues, "UShortConverter") + + public val BooleanToStringConverter: TypeRef = TypeRef(MapperPkg.Hl.ScalarValues, "BooleanToStringConverter") + public val CharArrayToStringConverter: TypeRef = TypeRef(MapperPkg.Hl.ScalarValues, "TextConverters.CharArrayToStringConverter") + public val CharToStringConverter: TypeRef = TypeRef(MapperPkg.Hl.ScalarValues, "TextConverters.CharToStringConverter") + public val StringToStringConverter: TypeRef = TypeRef(MapperPkg.Hl.ScalarValues, "TextConverters.StringToStringConverter") + public val ByteToStringConverter: TypeRef = TypeRef(MapperPkg.Hl.ScalarValues, "NumberConverters.ByteToStringConverter") + public val DoubleToStringConverter: TypeRef = TypeRef(MapperPkg.Hl.ScalarValues, "NumberConverters.DoubleToStringConverter") + public val FloatToStringConverter: TypeRef = TypeRef(MapperPkg.Hl.ScalarValues, "NumberConverters.FloatToStringConverter") + public val IntToStringConverter: TypeRef = TypeRef(MapperPkg.Hl.ScalarValues, "NumberConverters.IntToStringConverter") + public val LongToStringConverter: TypeRef = TypeRef(MapperPkg.Hl.ScalarValues, "NumberConverters.LongToStringConverter") + public val ShortToStringConverter: TypeRef = TypeRef(MapperPkg.Hl.ScalarValues, "NumberConverters.ShortToStringConverter") + public val UByteToStringConverter: TypeRef = TypeRef(MapperPkg.Hl.ScalarValues, "NumberConverters.UByteToStringConverter") + public val UIntToStringConverter: TypeRef = TypeRef(MapperPkg.Hl.ScalarValues, "NumberConverters.UIntToStringConverter") + public val ULongToStringConverter: TypeRef = TypeRef(MapperPkg.Hl.ScalarValues, "NumberConverters.ULongToStringConverter") + public val UShortToStringConverter: TypeRef = TypeRef(MapperPkg.Hl.ScalarValues, "NumberConverters.UShortToStringConverter") } - object SmithyTypes { - val DefaultInstantConverter = TypeRef(MapperPkg.Hl.SmithyTypeValues, "InstantConverter.Default") - val UrlConverter = TypeRef(MapperPkg.Hl.SmithyTypeValues, "UrlConverter") - val DefaultDocumentConverter = TypeRef(MapperPkg.Hl.SmithyTypeValues, "DocumentConverter.Default") + public object SmithyTypes { + public val DefaultInstantConverter: TypeRef = TypeRef(MapperPkg.Hl.SmithyTypeValues, "InstantConverter.Default") + public val UrlConverter: TypeRef = TypeRef(MapperPkg.Hl.SmithyTypeValues, "UrlConverter") + public val DefaultDocumentConverter: TypeRef = TypeRef(MapperPkg.Hl.SmithyTypeValues, "DocumentConverter.Default") } } - object PipelineImpl { - val HReqContextImpl = TypeRef(MapperPkg.Hl.PipelineImpl, "HReqContextImpl") - val MapperContextImpl = TypeRef(MapperPkg.Hl.PipelineImpl, "MapperContextImpl") - val Operation = TypeRef(MapperPkg.Hl.PipelineImpl, "Operation") + public object PipelineImpl { + public val HReqContextImpl: TypeRef = TypeRef(MapperPkg.Hl.PipelineImpl, "HReqContextImpl") + public val MapperContextImpl: TypeRef = TypeRef(MapperPkg.Hl.PipelineImpl, "MapperContextImpl") + public val Operation: TypeRef = TypeRef(MapperPkg.Hl.PipelineImpl, "Operation") } } diff --git a/hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/build.gradle.kts b/hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/build.gradle.kts new file mode 100644 index 00000000000..4c381da390f --- /dev/null +++ b/hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/build.gradle.kts @@ -0,0 +1,70 @@ +/* +* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +* SPDX-License-Identifier: Apache-2.0 +*/ + +description = "DynamoDbMapper ops code generation" +extra["displayName"] = "AWS :: SDK :: Kotlin :: HLL :: DynamoDbMapper :: Codegen :: Ops" +extra["moduleName"] = "aws.sdk.kotlin.hll.dynamodbmapper.codegen.ops" + +plugins { + alias(libs.plugins.kotlin.jvm) + `maven-publish` +} + +dependencies { + implementation(libs.ksp.api) + implementation(project(":hll:hll-codegen")) + implementation(project(":services:dynamodb")) + implementation(project(":hll:dynamodb-mapper:dynamodb-mapper-codegen")) + + testImplementation(libs.junit.jupiter) + testImplementation(libs.junit.jupiter.params) + testImplementation(libs.kotest.assertions.core.jvm) + testImplementation(libs.kotlin.test.junit5) +} + +val optinAnnotations = listOf( + "aws.smithy.kotlin.runtime.InternalApi", + "aws.sdk.kotlin.runtime.InternalSdkApi", + "kotlin.RequiresOptIn", +) + +kotlin { + explicitApi() + + sourceSets.all { + optinAnnotations.forEach(languageSettings::optIn) + } +} + +tasks.test { + useJUnitPlatform() + testLogging { + events("passed", "skipped", "failed") + showStandardStreams = true + showStackTraces = true + showExceptions = true + exceptionFormat = org.gradle.api.tasks.testing.logging.TestExceptionFormat.FULL + } +} + +val sdkVersion: String by project +group = "aws.sdk.kotlin" +version = sdkVersion + +val sourcesJar by tasks.creating(Jar::class) { + group = "publishing" + description = "Assembles Kotlin sources jar" + archiveClassifier.set("sources") + from(sourceSets.getByName("main").allSource) +} + +publishing { + publications { + create("dynamodb-mapper-ops-codegen") { + from(components["java"]) + artifact(sourcesJar) + } + } +} diff --git a/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/HighLevelOpsProcessor.kt b/hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/HighLevelOpsProcessor.kt similarity index 100% rename from hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/HighLevelOpsProcessor.kt rename to hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/HighLevelOpsProcessor.kt diff --git a/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/HighLevelOpsProcessorProvider.kt b/hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/HighLevelOpsProcessorProvider.kt similarity index 100% rename from hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/HighLevelOpsProcessorProvider.kt rename to hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/HighLevelOpsProcessorProvider.kt diff --git a/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/model/ItemSourceKind.kt b/hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/model/ItemSourceKind.kt similarity index 100% rename from hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/model/ItemSourceKind.kt rename to hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/model/ItemSourceKind.kt diff --git a/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/model/MemberCodegenBehavior.kt b/hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/model/MemberCodegenBehavior.kt similarity index 100% rename from hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/model/MemberCodegenBehavior.kt rename to hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/model/MemberCodegenBehavior.kt diff --git a/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/model/ModelAttributes.kt b/hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/model/ModelAttributes.kt similarity index 100% rename from hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/model/ModelAttributes.kt rename to hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/model/ModelAttributes.kt diff --git a/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/model/Operation.kt b/hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/model/Operation.kt similarity index 100% rename from hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/model/Operation.kt rename to hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/model/Operation.kt diff --git a/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/model/Pagination.kt b/hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/model/Pagination.kt similarity index 100% rename from hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/model/Pagination.kt rename to hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/model/Pagination.kt diff --git a/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/model/Structure.kt b/hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/model/Structure.kt similarity index 100% rename from hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/model/Structure.kt rename to hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/model/Structure.kt diff --git a/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/rendering/DataTypeGenerator.kt b/hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/rendering/DataTypeGenerator.kt similarity index 100% rename from hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/rendering/DataTypeGenerator.kt rename to hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/rendering/DataTypeGenerator.kt diff --git a/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/rendering/HighLevelRenderer.kt b/hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/rendering/HighLevelRenderer.kt similarity index 100% rename from hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/rendering/HighLevelRenderer.kt rename to hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/rendering/HighLevelRenderer.kt diff --git a/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/rendering/OperationRenderer.kt b/hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/rendering/OperationRenderer.kt similarity index 100% rename from hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/rendering/OperationRenderer.kt rename to hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/rendering/OperationRenderer.kt diff --git a/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/rendering/OperationsTypeRenderer.kt b/hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/rendering/OperationsTypeRenderer.kt similarity index 100% rename from hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/rendering/OperationsTypeRenderer.kt rename to hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/rendering/OperationsTypeRenderer.kt diff --git a/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/rendering/PaginatorRenderer.kt b/hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/rendering/PaginatorRenderer.kt similarity index 100% rename from hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/rendering/PaginatorRenderer.kt rename to hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/operations/rendering/PaginatorRenderer.kt diff --git a/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/resources/META-INF/services/aws.sdk.kotlin.hll.codegen.model.ModelParsingPlugin b/hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/resources/META-INF/services/aws.sdk.kotlin.hll.codegen.model.ModelParsingPlugin similarity index 100% rename from hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/resources/META-INF/services/aws.sdk.kotlin.hll.codegen.model.ModelParsingPlugin rename to hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/resources/META-INF/services/aws.sdk.kotlin.hll.codegen.model.ModelParsingPlugin diff --git a/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider b/hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider similarity index 50% rename from hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider rename to hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider index 59a8692f0a6..1940d69db61 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider +++ b/hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider @@ -1,3 +1,2 @@ aws.sdk.kotlin.hll.dynamodbmapper.codegen.operations.HighLevelOpsProcessorProvider -aws.sdk.kotlin.hll.dynamodbmapper.codegen.annotations.AnnotationsProcessorProvider diff --git a/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/build.gradle.kts b/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/build.gradle.kts new file mode 100644 index 00000000000..304e00623b8 --- /dev/null +++ b/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/build.gradle.kts @@ -0,0 +1,70 @@ +/* +* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +* SPDX-License-Identifier: Apache-2.0 +*/ + +description = "DynamoDbMapper schema code generation" +extra["displayName"] = "AWS :: SDK :: Kotlin :: HLL :: DynamoDbMapper :: Codegen :: Schema" +extra["moduleName"] = "aws.sdk.kotlin.hll.dynamodbmapper.codegen.schema" + +plugins { + alias(libs.plugins.kotlin.jvm) + `maven-publish` +} + +dependencies { + implementation(libs.ksp.api) + implementation(project(":hll:hll-codegen")) + implementation(project(":hll:dynamodb-mapper:dynamodb-mapper-annotations")) + implementation(project(":hll:dynamodb-mapper:dynamodb-mapper-codegen")) + + testImplementation(libs.junit.jupiter) + testImplementation(libs.junit.jupiter.params) + testImplementation(libs.kotest.assertions.core.jvm) + testImplementation(libs.kotlin.test.junit5) +} + +val optinAnnotations = listOf( + "aws.smithy.kotlin.runtime.InternalApi", + "aws.sdk.kotlin.runtime.InternalSdkApi", + "kotlin.RequiresOptIn", +) + +kotlin { + explicitApi() + + sourceSets.all { + optinAnnotations.forEach(languageSettings::optIn) + } +} + +tasks.test { + useJUnitPlatform() + testLogging { + events("passed", "skipped", "failed") + showStandardStreams = true + showStackTraces = true + showExceptions = true + exceptionFormat = org.gradle.api.tasks.testing.logging.TestExceptionFormat.FULL + } +} + +val sdkVersion: String by project +group = "aws.sdk.kotlin" +version = sdkVersion + +val sourcesJar by tasks.creating(Jar::class) { + group = "publishing" + description = "Assembles Kotlin sources jar" + archiveClassifier.set("sources") + from(sourceSets.getByName("main").allSource) +} + +publishing { + publications { + create("dynamodb-mapper-schema-codegen") { + from(components["java"]) + artifact(sourcesJar) + } + } +} diff --git a/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/AnnotationsProcessor.kt b/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/AnnotationsProcessor.kt similarity index 100% rename from hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/AnnotationsProcessor.kt rename to hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/AnnotationsProcessor.kt diff --git a/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/AnnotationsProcessorOptions.kt b/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/AnnotationsProcessorOptions.kt similarity index 100% rename from hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/AnnotationsProcessorOptions.kt rename to hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/AnnotationsProcessorOptions.kt diff --git a/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/AnnotationsProcessorProvider.kt b/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/AnnotationsProcessorProvider.kt similarity index 100% rename from hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/AnnotationsProcessorProvider.kt rename to hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/AnnotationsProcessorProvider.kt diff --git a/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/HighLevelRenderer.kt b/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/HighLevelRenderer.kt similarity index 100% rename from hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/HighLevelRenderer.kt rename to hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/HighLevelRenderer.kt diff --git a/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/SchemaAttributes.kt b/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/SchemaAttributes.kt similarity index 100% rename from hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/SchemaAttributes.kt rename to hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/SchemaAttributes.kt diff --git a/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/SchemaRenderer.kt b/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/SchemaRenderer.kt similarity index 99% rename from hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/SchemaRenderer.kt rename to hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/SchemaRenderer.kt index d3a2a49d9c3..ed02e4b3c46 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/SchemaRenderer.kt +++ b/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/SchemaRenderer.kt @@ -293,7 +293,7 @@ internal class SchemaRenderer( else -> error("Unsupported key type $typeName, expected ByteArray, Int, or String") } - private val KSPropertyDeclaration.keySpecType: TypeRef + private val KSPropertyDeclaration.keySpecType: Type get() = when (typeName) { "kotlin.ByteArray" -> MapperTypes.Items.KeySpecByteArray "kotlin.Int" -> MapperTypes.Items.KeySpecNumber diff --git a/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider b/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider new file mode 100644 index 00000000000..8b069324654 --- /dev/null +++ b/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider @@ -0,0 +1,2 @@ +aws.sdk.kotlin.hll.dynamodbmapper.codegen.annotations.AnnotationsProcessorProvider + diff --git a/hll/dynamodb-mapper/dynamodb-mapper-schema-generator-plugin/build.gradle.kts b/hll/dynamodb-mapper/dynamodb-mapper-schema-generator-plugin/build.gradle.kts index f3ac82b7c97..e6cb7c0ce6c 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper-schema-generator-plugin/build.gradle.kts +++ b/hll/dynamodb-mapper/dynamodb-mapper-schema-generator-plugin/build.gradle.kts @@ -23,7 +23,7 @@ dependencies { implementation(libs.ksp.gradle.plugin) implementation(project(":hll:hll-codegen")) // for RenderOptions - implementation(project(":hll:dynamodb-mapper:dynamodb-mapper-codegen")) // for AnnotationsProcessorOptions + implementation(project(":hll:dynamodb-mapper:dynamodb-mapper-schema-codegen")) // for AnnotationsProcessorOptions implementation(libs.smithy.kotlin.runtime.core) // for AttributeKey testImplementation(libs.junit.jupiter) @@ -176,6 +176,8 @@ tasks.withType { dependsOn(":aws-runtime:aws-http:publishToMavenLocal") dependsOn(":hll:dynamodb-mapper:dynamodb-mapper-annotations:publishToMavenLocal") dependsOn(":hll:dynamodb-mapper:dynamodb-mapper-codegen:publishToMavenLocal") + dependsOn(":hll:dynamodb-mapper:dynamodb-mapper-schema-codegen:publishToMavenLocal") + dependsOn(":hll:dynamodb-mapper:dynamodb-mapper-ops-codegen:publishToMavenLocal") dependsOn(":hll:dynamodb-mapper:dynamodb-mapper-schema-generator-plugin:publishToMavenLocal") dependsOn(":hll:dynamodb-mapper:dynamodb-mapper:publishToMavenLocal") dependsOn(":hll:hll-codegen:publishToMavenLocal") diff --git a/hll/dynamodb-mapper/dynamodb-mapper-schema-generator-plugin/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/plugins/SchemaGeneratorPlugin.kt b/hll/dynamodb-mapper/dynamodb-mapper-schema-generator-plugin/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/plugins/SchemaGeneratorPlugin.kt index d27504ca1e8..fd50cafe600 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper-schema-generator-plugin/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/plugins/SchemaGeneratorPlugin.kt +++ b/hll/dynamodb-mapper/dynamodb-mapper-schema-generator-plugin/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/plugins/SchemaGeneratorPlugin.kt @@ -38,7 +38,7 @@ public class SchemaGeneratorPlugin : Plugin { } val sdkVersion = getSdkVersion() - dependencies.add("ksp", "aws.sdk.kotlin:dynamodb-mapper-codegen:$sdkVersion") + dependencies.add("ksp", "aws.sdk.kotlin:dynamodb-mapper-schema-codegen:$sdkVersion") } // Reads sdk-version.txt for the SDK version to add dependencies on. The file is created in this module's build.gradle.kts diff --git a/hll/dynamodb-mapper/dynamodb-mapper/build.gradle.kts b/hll/dynamodb-mapper/dynamodb-mapper/build.gradle.kts index 2596d4194df..72c2908e1b4 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper/build.gradle.kts +++ b/hll/dynamodb-mapper/dynamodb-mapper/build.gradle.kts @@ -59,14 +59,12 @@ ksp { "scan", ) arg("op-allowlist", allowlist.joinToString(";")) - - excludeProcessor("aws.sdk.kotlin.hll.dynamodbmapper.codegen.annotations.AnnotationsProcessor") } if (project.NATIVE_ENABLED) { // Configure KSP for commonMain source generation; https://github.com/google/ksp/issues/963#issuecomment-1894144639 - dependencies.kspCommonMainMetadata(project(":hll:dynamodb-mapper:dynamodb-mapper-codegen")) + dependencies.kspCommonMainMetadata(project(":hll:dynamodb-mapper:dynamodb-mapper-ops-codegen")) kotlin.sourceSets.commonMain { tasks.withType { @@ -79,7 +77,7 @@ if (project.NATIVE_ENABLED) { // hack follows in narrative, minimally-opinionated comments. // Start by invoking the JVM-only KSP configuration - dependencies.kspJvm(project(":hll:dynamodb-mapper:dynamodb-mapper-codegen")) + dependencies.kspJvm(project(":hll:dynamodb-mapper:dynamodb-mapper-ops-codegen")) // Then we need to move the generated source from jvm to common val moveGenSrc by tasks.registering { diff --git a/hll/dynamodb-mapper/tests/dynamodb-mapper-annotation-processor-test/build.gradle.kts b/hll/dynamodb-mapper/tests/dynamodb-mapper-annotation-processor-test/build.gradle.kts index 6b5a4a097a7..eab1998ad3c 100644 --- a/hll/dynamodb-mapper/tests/dynamodb-mapper-annotation-processor-test/build.gradle.kts +++ b/hll/dynamodb-mapper/tests/dynamodb-mapper-annotation-processor-test/build.gradle.kts @@ -22,7 +22,7 @@ dependencies { listOf( "kspCommonMainMetadata", "kspJvm", // FIXME Generating common code is hard for KSP: https://github.com/google/ksp/issues/567 - ).forEach { configuration -> add(configuration, project(":hll:dynamodb-mapper:dynamodb-mapper-codegen")) } + ).forEach { configuration -> add(configuration, project(":hll:dynamodb-mapper:dynamodb-mapper-schema-codegen")) } } ksp { diff --git a/settings.gradle.kts b/settings.gradle.kts index 49237132653..76d43ea1650 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -72,6 +72,8 @@ if ("dynamodb".isBootstrappedService) { include(":hll:dynamodb-mapper") include(":hll:dynamodb-mapper:dynamodb-mapper") include(":hll:dynamodb-mapper:dynamodb-mapper-codegen") + include(":hll:dynamodb-mapper:dynamodb-mapper-ops-codegen") + include(":hll:dynamodb-mapper:dynamodb-mapper-schema-codegen") include(":hll:dynamodb-mapper:dynamodb-mapper-annotations") include(":hll:dynamodb-mapper:tests:dynamodb-mapper-annotation-processor-test") include(":hll:dynamodb-mapper:dynamodb-mapper-schema-generator-plugin") From 39a19204da3b2a9286edfaa7658a4c46e34800b3 Mon Sep 17 00:00:00 2001 From: Matas Lauzadis Date: Fri, 20 Sep 2024 14:06:20 -0400 Subject: [PATCH 2/9] Latest --- gradle.properties | 4 +++- .../api/dynamodb-mapper-annotations.api | 13 ++++++++++++- .../build.gradle.kts | 14 ++++++++++++++ .../kotlin/hll/dynamodbmapper/Annotations.kt | 16 +++++++++++++--- .../dynamodb-mapper-codegen/build.gradle.kts | 19 ------------------- .../annotations/AnnotationsProcessor.kt | 1 - .../rendering/HighLevelRenderer.kt | 3 +++ .../annotations/rendering/SchemaRenderer.kt | 17 ++++++++++++----- .../custom-item-converter/CustomUser.kt | 3 ++- .../build.gradle.kts | 6 +----- .../tests/processor/data/UserTest.kt | 2 +- settings.gradle.kts | 2 +- 12 files changed, 62 insertions(+), 38 deletions(-) diff --git a/gradle.properties b/gradle.properties index 0cdc1bdbf7a..2abfb9453be 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,4 +14,6 @@ smithyKotlinDocBaseUrl=https://sdk.amazonaws.com/kotlin/api/smithy-kotlin/api/$s # atomicfu kotlinx.atomicfu.enableJvmIrTransformation=true # FIXME - https://github.com/Kotlin/kotlinx-atomicfu/issues/274 -kotlinx.atomicfu.enableNativeIrTransformation=false \ No newline at end of file +kotlinx.atomicfu.enableNativeIrTransformation=false + +ksp.useKSP2=true \ No newline at end of file diff --git a/hll/dynamodb-mapper/dynamodb-mapper-annotations/api/dynamodb-mapper-annotations.api b/hll/dynamodb-mapper/dynamodb-mapper-annotations/api/dynamodb-mapper-annotations.api index 8f5c7313892..b1159177b70 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper-annotations/api/dynamodb-mapper-annotations.api +++ b/hll/dynamodb-mapper/dynamodb-mapper-annotations/api/dynamodb-mapper-annotations.api @@ -6,7 +6,7 @@ public abstract interface annotation class aws/sdk/kotlin/hll/dynamodbmapper/Dyn } public abstract interface annotation class aws/sdk/kotlin/hll/dynamodbmapper/DynamoDbItem : java/lang/annotation/Annotation { - public abstract fun converterName ()Ljava/lang/String; + public abstract fun converter ()Ljava/lang/Class; } public abstract interface annotation class aws/sdk/kotlin/hll/dynamodbmapper/DynamoDbPartitionKey : java/lang/annotation/Annotation { @@ -15,3 +15,14 @@ public abstract interface annotation class aws/sdk/kotlin/hll/dynamodbmapper/Dyn public abstract interface annotation class aws/sdk/kotlin/hll/dynamodbmapper/DynamoDbSortKey : java/lang/annotation/Annotation { } +public final class aws/sdk/kotlin/hll/dynamodbmapper/UnspecifiedItemConverter : aws/sdk/kotlin/hll/dynamodbmapper/items/ItemConverter { + public static final field INSTANCE Laws/sdk/kotlin/hll/dynamodbmapper/UnspecifiedItemConverter; + public fun convertFrom (Laws/sdk/kotlin/hll/dynamodbmapper/model/Item;)Laws/sdk/kotlin/hll/dynamodbmapper/model/Item; + public synthetic fun convertFrom (Ljava/lang/Object;)Ljava/lang/Object; + public fun convertTo (Laws/sdk/kotlin/hll/dynamodbmapper/model/Item;)Laws/sdk/kotlin/hll/dynamodbmapper/model/Item; + public fun convertTo (Laws/sdk/kotlin/hll/dynamodbmapper/model/Item;Ljava/util/Set;)Laws/sdk/kotlin/hll/dynamodbmapper/model/Item; + public synthetic fun convertTo (Ljava/lang/Object;)Laws/sdk/kotlin/hll/dynamodbmapper/model/Item; + public synthetic fun convertTo (Ljava/lang/Object;)Ljava/lang/Object; + public synthetic fun convertTo (Ljava/lang/Object;Ljava/util/Set;)Laws/sdk/kotlin/hll/dynamodbmapper/model/Item; +} + diff --git a/hll/dynamodb-mapper/dynamodb-mapper-annotations/build.gradle.kts b/hll/dynamodb-mapper/dynamodb-mapper-annotations/build.gradle.kts index 35d0f3613ab..1345b3e08c7 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper-annotations/build.gradle.kts +++ b/hll/dynamodb-mapper/dynamodb-mapper-annotations/build.gradle.kts @@ -2,3 +2,17 @@ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0 */ + +description = "DynamoDbMapper annotations" +extra["displayName"] = "AWS :: SDK :: Kotlin :: HLL :: DynamoDbMapper :: Annotations" +extra["moduleName"] = "aws.sdk.kotlin.hll.dynamodbmapper.annotations" + +kotlin { + sourceSets { + commonMain { + dependencies { + implementation(project(":hll:dynamodb-mapper:dynamodb-mapper")) + } + } + } +} diff --git a/hll/dynamodb-mapper/dynamodb-mapper-annotations/common/src/aws/sdk/kotlin/hll/dynamodbmapper/Annotations.kt b/hll/dynamodb-mapper/dynamodb-mapper-annotations/common/src/aws/sdk/kotlin/hll/dynamodbmapper/Annotations.kt index e102c7f49c4..715dd67d0b0 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper-annotations/common/src/aws/sdk/kotlin/hll/dynamodbmapper/Annotations.kt +++ b/hll/dynamodb-mapper/dynamodb-mapper-annotations/common/src/aws/sdk/kotlin/hll/dynamodbmapper/Annotations.kt @@ -4,6 +4,11 @@ */ package aws.sdk.kotlin.hll.dynamodbmapper +import aws.sdk.kotlin.hll.dynamodbmapper.items.ItemConverter +import aws.sdk.kotlin.hll.dynamodbmapper.model.Item +import aws.sdk.kotlin.runtime.InternalSdkApi +import kotlin.reflect.KClass + /** * Specifies the attribute name for a property in a [DynamoDbItem]-annotated class/interface. If this annotation is not * included then the attribute name matches the property name. @@ -14,12 +19,17 @@ public annotation class DynamoDbAttribute(val name: String) /** * Specifies that this class/interface describes an item type in a table. All public properties of this type will be mapped to * attributes unless they are explicitly ignored. - * @param converterName The fully qualified name of the item converter to be used for converting this class/interface. + * @param converter A class reference of the item converter to be used for converting this annotated class/interface. * If not set, one will be automatically generated. */ -// FIXME Update to take a KClass, which will require splitting codegen modules due to a circular dependency @Target(AnnotationTarget.CLASS) -public annotation class DynamoDbItem(val converterName: String = "") +public annotation class DynamoDbItem(val converter: KClass<*> = UnspecifiedItemConverter::class) + +//@InternalSdkApi +public object UnspecifiedItemConverter: ItemConverter { + override fun convertTo(from: Item, onlyAttributes: Set?): Item = from + override fun convertFrom(to: Item): Item = to +} /** * Specifies that this property is the primary key for the item. Every top-level [DynamoDbItem] to be used in a table diff --git a/hll/dynamodb-mapper/dynamodb-mapper-codegen/build.gradle.kts b/hll/dynamodb-mapper/dynamodb-mapper-codegen/build.gradle.kts index efb5056ea3c..5cb39317203 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper-codegen/build.gradle.kts +++ b/hll/dynamodb-mapper/dynamodb-mapper-codegen/build.gradle.kts @@ -13,15 +13,7 @@ plugins { } dependencies { - implementation(libs.ksp.api) implementation(project(":hll:hll-codegen")) - implementation(project(":hll:dynamodb-mapper:dynamodb-mapper-annotations")) - implementation(project(":services:dynamodb")) - - testImplementation(libs.junit.jupiter) - testImplementation(libs.junit.jupiter.params) - testImplementation(libs.kotest.assertions.core.jvm) - testImplementation(libs.kotlin.test.junit5) } val optinAnnotations = listOf( @@ -38,17 +30,6 @@ kotlin { } } -tasks.test { - useJUnitPlatform() - testLogging { - events("passed", "skipped", "failed") - showStandardStreams = true - showStackTraces = true - showExceptions = true - exceptionFormat = org.gradle.api.tasks.testing.logging.TestExceptionFormat.FULL - } -} - val sdkVersion: String by project group = "aws.sdk.kotlin" version = sdkVersion diff --git a/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/AnnotationsProcessor.kt b/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/AnnotationsProcessor.kt index ce81c7740b4..aa633affb2e 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/AnnotationsProcessor.kt +++ b/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/AnnotationsProcessor.kt @@ -22,7 +22,6 @@ private val annotationName = DynamoDbItem::class.qualifiedName!! public class AnnotationsProcessor(private val environment: SymbolProcessorEnvironment) : HllKspProcessor(environment) { private val logger = environment.logger - private val codeGenerator = environment.codeGenerator override fun processImpl(resolver: Resolver): List { logger.info("Searching for symbols annotated with $annotationName") diff --git a/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/HighLevelRenderer.kt b/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/HighLevelRenderer.kt index 51f3fd12253..3f63433d655 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/HighLevelRenderer.kt +++ b/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/HighLevelRenderer.kt @@ -7,9 +7,12 @@ package aws.sdk.kotlin.hll.dynamodbmapper.codegen.annotations.rendering import aws.sdk.kotlin.hll.codegen.core.CodeGeneratorFactory import aws.sdk.kotlin.hll.codegen.rendering.RenderContext import aws.sdk.kotlin.hll.codegen.util.plus +import aws.sdk.kotlin.hll.dynamodbmapper.DynamoDbItem import aws.sdk.kotlin.hll.dynamodbmapper.codegen.annotations.AnnotationsProcessorOptions import aws.sdk.kotlin.hll.dynamodbmapper.codegen.annotations.DestinationPackage import aws.smithy.kotlin.runtime.collections.* +import com.google.devtools.ksp.KspExperimental +import com.google.devtools.ksp.getAnnotationsByType import com.google.devtools.ksp.processing.KSPLogger import com.google.devtools.ksp.symbol.KSClassDeclaration diff --git a/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/SchemaRenderer.kt b/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/SchemaRenderer.kt index ed02e4b3c46..74f29f6d09e 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/SchemaRenderer.kt +++ b/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/SchemaRenderer.kt @@ -23,6 +23,7 @@ import com.google.devtools.ksp.symbol.* * @param classDeclaration the [KSClassDeclaration] of the class * @param ctx the [RenderContext] of the renderer */ +@OptIn(KspExperimental::class) internal class SchemaRenderer( private val classDeclaration: KSClassDeclaration, private val ctx: RenderContext, @@ -37,12 +38,18 @@ internal class SchemaRenderer( @OptIn(KspExperimental::class) private val dynamoDbItemAnnotation = classDeclaration.getAnnotationsByType(DynamoDbItem::class).single() + init { + val anno = classDeclaration.getAnnotationsByType(DynamoDbItem::class).single() + ctx.logger.warn("It has a converter ${anno.converter}") + ctx.logger.warn("It has a Java class ${anno.javaClass}") + } + private val itemConverter: Type = dynamoDbItemAnnotation - .converterName - .takeIf { it.isNotBlank() } + .takeIf { it.converter != UnspecifiedItemConverter::class } ?.let { - val pkg = it.substringBeforeLast(".") - val shortName = it.removePrefix("$pkg.") + val fullName = checkNotNull(it.converter.qualifiedName) { "DynamoDbItem converter qualified name is unexpectedly null" } + val pkg = fullName.substringBeforeLast(".") + val shortName = fullName.removePrefix("$pkg.") TypeRef(pkg, shortName) } ?: TypeRef(ctx.pkg, converterName) @@ -82,7 +89,7 @@ internal class SchemaRenderer( renderBuilder() } - if (dynamoDbItemAnnotation.converterName.isBlank()) { + if (dynamoDbItemAnnotation.converter == UnspecifiedItemConverter::class) { renderItemConverter() } diff --git a/hll/dynamodb-mapper/dynamodb-mapper-schema-generator-plugin/src/test/resources/custom-item-converter/CustomUser.kt b/hll/dynamodb-mapper/dynamodb-mapper-schema-generator-plugin/src/test/resources/custom-item-converter/CustomUser.kt index 75fe3234cdb..5cc3e973a69 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper-schema-generator-plugin/src/test/resources/custom-item-converter/CustomUser.kt +++ b/hll/dynamodb-mapper/dynamodb-mapper-schema-generator-plugin/src/test/resources/custom-item-converter/CustomUser.kt @@ -2,8 +2,9 @@ package org.example import aws.sdk.kotlin.hll.dynamodbmapper.DynamoDbItem import aws.sdk.kotlin.hll.dynamodbmapper.DynamoDbPartitionKey +import my.custom.item.converter.MyCustomUserConverter -@DynamoDbItem("my.custom.item.converter.MyCustomUserConverter") +@DynamoDbItem(converter = MyCustomUserConverter::class) public data class CustomUser( @DynamoDbPartitionKey var id: Int = 1, var givenName: String = "Johnny", diff --git a/hll/dynamodb-mapper/tests/dynamodb-mapper-annotation-processor-test/build.gradle.kts b/hll/dynamodb-mapper/tests/dynamodb-mapper-annotation-processor-test/build.gradle.kts index eab1998ad3c..c103db0235f 100644 --- a/hll/dynamodb-mapper/tests/dynamodb-mapper-annotation-processor-test/build.gradle.kts +++ b/hll/dynamodb-mapper/tests/dynamodb-mapper-annotation-processor-test/build.gradle.kts @@ -13,6 +13,7 @@ kotlin { dependencies { implementation(project(":hll:dynamodb-mapper:dynamodb-mapper")) implementation(project(":hll:dynamodb-mapper:dynamodb-mapper-annotations")) + implementation(project(":hll:dynamodb-mapper:dynamodb-mapper-schema-codegen")) } } } @@ -24,8 +25,3 @@ dependencies { "kspJvm", // FIXME Generating common code is hard for KSP: https://github.com/google/ksp/issues/567 ).forEach { configuration -> add(configuration, project(":hll:dynamodb-mapper:dynamodb-mapper-schema-codegen")) } } - -ksp { - // annotation-processor-test does not need the ops-codegen processor loaded - excludeProcessor("aws.sdk.kotlin.hll.dynamodbmapper.codegen.operations.HighLevelOpsProcessorProvider") -} diff --git a/hll/dynamodb-mapper/tests/dynamodb-mapper-annotation-processor-test/common/test/aws/sdk/kotlin/hll/dynamodbmapper/tests/processor/data/UserTest.kt b/hll/dynamodb-mapper/tests/dynamodb-mapper-annotation-processor-test/common/test/aws/sdk/kotlin/hll/dynamodbmapper/tests/processor/data/UserTest.kt index e2082c04c42..89983af4fa2 100644 --- a/hll/dynamodb-mapper/tests/dynamodb-mapper-annotation-processor-test/common/test/aws/sdk/kotlin/hll/dynamodbmapper/tests/processor/data/UserTest.kt +++ b/hll/dynamodb-mapper/tests/dynamodb-mapper-annotation-processor-test/common/test/aws/sdk/kotlin/hll/dynamodbmapper/tests/processor/data/UserTest.kt @@ -5,7 +5,7 @@ package aws.sdk.kotlin.hll.dynamodbmapper.tests.processor.data import aws.sdk.kotlin.hll.dynamodbmapper.model.itemOf -import aws.sdk.kotlin.hll.dynamodbmapper.tests.processor.data.aws.sdk.kotlin.hll.dynamodbmapper.generatedschemas.UserConverter +import aws.sdk.kotlin.hll.dynamodbmapper.tests.processor.data.dynamodbmapper.generatedschemas.UserConverter import aws.sdk.kotlin.services.dynamodb.model.AttributeValue import kotlin.test.Test import kotlin.test.assertEquals diff --git a/settings.gradle.kts b/settings.gradle.kts index 76d43ea1650..2e2f9742a99 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -75,7 +75,7 @@ if ("dynamodb".isBootstrappedService) { include(":hll:dynamodb-mapper:dynamodb-mapper-ops-codegen") include(":hll:dynamodb-mapper:dynamodb-mapper-schema-codegen") include(":hll:dynamodb-mapper:dynamodb-mapper-annotations") - include(":hll:dynamodb-mapper:tests:dynamodb-mapper-annotation-processor-test") +// include(":hll:dynamodb-mapper:tests:dynamodb-mapper-annotation-processor-test") include(":hll:dynamodb-mapper:dynamodb-mapper-schema-generator-plugin") include(":hll:dynamodb-mapper:tests:dynamodb-mapper-schema-generator-plugin-test") } else { From 8dd69b92932b679cf0c744e3f2bdbcea462fdb0f Mon Sep 17 00:00:00 2001 From: Matas Lauzadis Date: Fri, 20 Sep 2024 15:17:46 -0400 Subject: [PATCH 3/9] revert --- .../aws/sdk/kotlin/hll/dynamodbmapper/Annotations.kt | 4 +++- .../codegen/annotations/rendering/HighLevelRenderer.kt | 3 --- .../codegen/annotations/rendering/SchemaRenderer.kt | 10 +++++----- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/hll/dynamodb-mapper/dynamodb-mapper-annotations/common/src/aws/sdk/kotlin/hll/dynamodbmapper/Annotations.kt b/hll/dynamodb-mapper/dynamodb-mapper-annotations/common/src/aws/sdk/kotlin/hll/dynamodbmapper/Annotations.kt index 715dd67d0b0..7b1ffb5754a 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper-annotations/common/src/aws/sdk/kotlin/hll/dynamodbmapper/Annotations.kt +++ b/hll/dynamodb-mapper/dynamodb-mapper-annotations/common/src/aws/sdk/kotlin/hll/dynamodbmapper/Annotations.kt @@ -23,7 +23,9 @@ public annotation class DynamoDbAttribute(val name: String) * If not set, one will be automatically generated. */ @Target(AnnotationTarget.CLASS) -public annotation class DynamoDbItem(val converter: KClass<*> = UnspecifiedItemConverter::class) +// FIXME Update to take a KClass> once KSP bug is fixed +// https://github.com/google/ksp/issues/1129 +public annotation class DynamoDbItem(val converterName: String) //@InternalSdkApi public object UnspecifiedItemConverter: ItemConverter { diff --git a/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/HighLevelRenderer.kt b/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/HighLevelRenderer.kt index 3f63433d655..51f3fd12253 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/HighLevelRenderer.kt +++ b/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/HighLevelRenderer.kt @@ -7,12 +7,9 @@ package aws.sdk.kotlin.hll.dynamodbmapper.codegen.annotations.rendering import aws.sdk.kotlin.hll.codegen.core.CodeGeneratorFactory import aws.sdk.kotlin.hll.codegen.rendering.RenderContext import aws.sdk.kotlin.hll.codegen.util.plus -import aws.sdk.kotlin.hll.dynamodbmapper.DynamoDbItem import aws.sdk.kotlin.hll.dynamodbmapper.codegen.annotations.AnnotationsProcessorOptions import aws.sdk.kotlin.hll.dynamodbmapper.codegen.annotations.DestinationPackage import aws.smithy.kotlin.runtime.collections.* -import com.google.devtools.ksp.KspExperimental -import com.google.devtools.ksp.getAnnotationsByType import com.google.devtools.ksp.processing.KSPLogger import com.google.devtools.ksp.symbol.KSClassDeclaration diff --git a/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/SchemaRenderer.kt b/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/SchemaRenderer.kt index 74f29f6d09e..ca02f238738 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/SchemaRenderer.kt +++ b/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/SchemaRenderer.kt @@ -45,11 +45,11 @@ internal class SchemaRenderer( } private val itemConverter: Type = dynamoDbItemAnnotation - .takeIf { it.converter != UnspecifiedItemConverter::class } + .converterName + .takeIf { it.isNotBlank() } ?.let { - val fullName = checkNotNull(it.converter.qualifiedName) { "DynamoDbItem converter qualified name is unexpectedly null" } - val pkg = fullName.substringBeforeLast(".") - val shortName = fullName.removePrefix("$pkg.") + val pkg = it.substringBeforeLast(".") + val shortName = it.removePrefix("$pkg.") TypeRef(pkg, shortName) } ?: TypeRef(ctx.pkg, converterName) @@ -89,7 +89,7 @@ internal class SchemaRenderer( renderBuilder() } - if (dynamoDbItemAnnotation.converter == UnspecifiedItemConverter::class) { + if (dynamoDbItemAnnotation.converterName.isBlank()) { renderItemConverter() } From 38a5cda1c7bb76c1651f2e884ffc10ba63045e30 Mon Sep 17 00:00:00 2001 From: Matas Lauzadis Date: Fri, 20 Sep 2024 15:21:04 -0400 Subject: [PATCH 4/9] Remove unnecessary dependency --- .../dynamodb-mapper-annotations/build.gradle.kts | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/hll/dynamodb-mapper/dynamodb-mapper-annotations/build.gradle.kts b/hll/dynamodb-mapper/dynamodb-mapper-annotations/build.gradle.kts index 1345b3e08c7..2576670bf70 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper-annotations/build.gradle.kts +++ b/hll/dynamodb-mapper/dynamodb-mapper-annotations/build.gradle.kts @@ -6,13 +6,3 @@ description = "DynamoDbMapper annotations" extra["displayName"] = "AWS :: SDK :: Kotlin :: HLL :: DynamoDbMapper :: Annotations" extra["moduleName"] = "aws.sdk.kotlin.hll.dynamodbmapper.annotations" - -kotlin { - sourceSets { - commonMain { - dependencies { - implementation(project(":hll:dynamodb-mapper:dynamodb-mapper")) - } - } - } -} From 66c2ca28dd1a78c4d328b6b6bdfa58322d5ec43b Mon Sep 17 00:00:00 2001 From: Matas Lauzadis Date: Fri, 20 Sep 2024 15:21:16 -0400 Subject: [PATCH 5/9] Remove unused object --- .../src/aws/sdk/kotlin/hll/dynamodbmapper/Annotations.kt | 6 ------ 1 file changed, 6 deletions(-) diff --git a/hll/dynamodb-mapper/dynamodb-mapper-annotations/common/src/aws/sdk/kotlin/hll/dynamodbmapper/Annotations.kt b/hll/dynamodb-mapper/dynamodb-mapper-annotations/common/src/aws/sdk/kotlin/hll/dynamodbmapper/Annotations.kt index 7b1ffb5754a..7af4cf85b4a 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper-annotations/common/src/aws/sdk/kotlin/hll/dynamodbmapper/Annotations.kt +++ b/hll/dynamodb-mapper/dynamodb-mapper-annotations/common/src/aws/sdk/kotlin/hll/dynamodbmapper/Annotations.kt @@ -27,12 +27,6 @@ public annotation class DynamoDbAttribute(val name: String) // https://github.com/google/ksp/issues/1129 public annotation class DynamoDbItem(val converterName: String) -//@InternalSdkApi -public object UnspecifiedItemConverter: ItemConverter { - override fun convertTo(from: Item, onlyAttributes: Set?): Item = from - override fun convertFrom(to: Item): Item = to -} - /** * Specifies that this property is the primary key for the item. Every top-level [DynamoDbItem] to be used in a table * must have exactly one partition key. From 2f5c59da986f3f44569d322a360ccb351870d34d Mon Sep 17 00:00:00 2001 From: Matas Lauzadis Date: Fri, 20 Sep 2024 15:33:56 -0400 Subject: [PATCH 6/9] 1st pass --- gradle.properties | 1 + .../api/dynamodb-mapper-annotations.api | 13 +------------ .../sdk/kotlin/hll/dynamodbmapper/Annotations.kt | 5 ----- .../hll/dynamodbmapper/codegen/model/MapperTypes.kt | 2 ++ .../codegen/annotations/rendering/SchemaRenderer.kt | 8 +------- .../resources/custom-item-converter/CustomUser.kt | 3 +-- .../dynamodbmapper/tests/processor/data/UserTest.kt | 2 +- settings.gradle.kts | 2 +- 8 files changed, 8 insertions(+), 28 deletions(-) diff --git a/gradle.properties b/gradle.properties index 2abfb9453be..70d94d3e4a4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -16,4 +16,5 @@ kotlinx.atomicfu.enableJvmIrTransformation=true # FIXME - https://github.com/Kotlin/kotlinx-atomicfu/issues/274 kotlinx.atomicfu.enableNativeIrTransformation=false +# https://github.com/google/ksp/blob/main/docs/ksp2.md ksp.useKSP2=true \ No newline at end of file diff --git a/hll/dynamodb-mapper/dynamodb-mapper-annotations/api/dynamodb-mapper-annotations.api b/hll/dynamodb-mapper/dynamodb-mapper-annotations/api/dynamodb-mapper-annotations.api index b1159177b70..8f5c7313892 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper-annotations/api/dynamodb-mapper-annotations.api +++ b/hll/dynamodb-mapper/dynamodb-mapper-annotations/api/dynamodb-mapper-annotations.api @@ -6,7 +6,7 @@ public abstract interface annotation class aws/sdk/kotlin/hll/dynamodbmapper/Dyn } public abstract interface annotation class aws/sdk/kotlin/hll/dynamodbmapper/DynamoDbItem : java/lang/annotation/Annotation { - public abstract fun converter ()Ljava/lang/Class; + public abstract fun converterName ()Ljava/lang/String; } public abstract interface annotation class aws/sdk/kotlin/hll/dynamodbmapper/DynamoDbPartitionKey : java/lang/annotation/Annotation { @@ -15,14 +15,3 @@ public abstract interface annotation class aws/sdk/kotlin/hll/dynamodbmapper/Dyn public abstract interface annotation class aws/sdk/kotlin/hll/dynamodbmapper/DynamoDbSortKey : java/lang/annotation/Annotation { } -public final class aws/sdk/kotlin/hll/dynamodbmapper/UnspecifiedItemConverter : aws/sdk/kotlin/hll/dynamodbmapper/items/ItemConverter { - public static final field INSTANCE Laws/sdk/kotlin/hll/dynamodbmapper/UnspecifiedItemConverter; - public fun convertFrom (Laws/sdk/kotlin/hll/dynamodbmapper/model/Item;)Laws/sdk/kotlin/hll/dynamodbmapper/model/Item; - public synthetic fun convertFrom (Ljava/lang/Object;)Ljava/lang/Object; - public fun convertTo (Laws/sdk/kotlin/hll/dynamodbmapper/model/Item;)Laws/sdk/kotlin/hll/dynamodbmapper/model/Item; - public fun convertTo (Laws/sdk/kotlin/hll/dynamodbmapper/model/Item;Ljava/util/Set;)Laws/sdk/kotlin/hll/dynamodbmapper/model/Item; - public synthetic fun convertTo (Ljava/lang/Object;)Laws/sdk/kotlin/hll/dynamodbmapper/model/Item; - public synthetic fun convertTo (Ljava/lang/Object;)Ljava/lang/Object; - public synthetic fun convertTo (Ljava/lang/Object;Ljava/util/Set;)Laws/sdk/kotlin/hll/dynamodbmapper/model/Item; -} - diff --git a/hll/dynamodb-mapper/dynamodb-mapper-annotations/common/src/aws/sdk/kotlin/hll/dynamodbmapper/Annotations.kt b/hll/dynamodb-mapper/dynamodb-mapper-annotations/common/src/aws/sdk/kotlin/hll/dynamodbmapper/Annotations.kt index 7af4cf85b4a..62c24e8eb6f 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper-annotations/common/src/aws/sdk/kotlin/hll/dynamodbmapper/Annotations.kt +++ b/hll/dynamodb-mapper/dynamodb-mapper-annotations/common/src/aws/sdk/kotlin/hll/dynamodbmapper/Annotations.kt @@ -4,11 +4,6 @@ */ package aws.sdk.kotlin.hll.dynamodbmapper -import aws.sdk.kotlin.hll.dynamodbmapper.items.ItemConverter -import aws.sdk.kotlin.hll.dynamodbmapper.model.Item -import aws.sdk.kotlin.runtime.InternalSdkApi -import kotlin.reflect.KClass - /** * Specifies the attribute name for a property in a [DynamoDbItem]-annotated class/interface. If this annotation is not * included then the attribute name matches the property name. diff --git a/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/model/MapperTypes.kt b/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/model/MapperTypes.kt index 204b9cb24fd..2b979e5e2ac 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/model/MapperTypes.kt +++ b/hll/dynamodb-mapper/dynamodb-mapper-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/model/MapperTypes.kt @@ -4,10 +4,12 @@ import aws.sdk.kotlin.hll.codegen.model.Type import aws.sdk.kotlin.hll.codegen.model.TypeRef import aws.sdk.kotlin.hll.codegen.model.TypeVar import aws.sdk.kotlin.hll.codegen.model.Types +import aws.sdk.kotlin.runtime.InternalSdkApi /** * A container object for various DynamoDbMapper [Type] instances */ +@InternalSdkApi public object MapperTypes { // Low-level types public val AttributeValue: TypeRef = TypeRef(MapperPkg.Ll.Model, "AttributeValue") diff --git a/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/SchemaRenderer.kt b/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/SchemaRenderer.kt index ca02f238738..f23bea808a9 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/SchemaRenderer.kt +++ b/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/SchemaRenderer.kt @@ -38,12 +38,6 @@ internal class SchemaRenderer( @OptIn(KspExperimental::class) private val dynamoDbItemAnnotation = classDeclaration.getAnnotationsByType(DynamoDbItem::class).single() - init { - val anno = classDeclaration.getAnnotationsByType(DynamoDbItem::class).single() - ctx.logger.warn("It has a converter ${anno.converter}") - ctx.logger.warn("It has a Java class ${anno.javaClass}") - } - private val itemConverter: Type = dynamoDbItemAnnotation .converterName .takeIf { it.isNotBlank() } @@ -300,7 +294,7 @@ internal class SchemaRenderer( else -> error("Unsupported key type $typeName, expected ByteArray, Int, or String") } - private val KSPropertyDeclaration.keySpecType: Type + private val KSPropertyDeclaration.keySpecType: TypeRef get() = when (typeName) { "kotlin.ByteArray" -> MapperTypes.Items.KeySpecByteArray "kotlin.Int" -> MapperTypes.Items.KeySpecNumber diff --git a/hll/dynamodb-mapper/dynamodb-mapper-schema-generator-plugin/src/test/resources/custom-item-converter/CustomUser.kt b/hll/dynamodb-mapper/dynamodb-mapper-schema-generator-plugin/src/test/resources/custom-item-converter/CustomUser.kt index 5cc3e973a69..75fe3234cdb 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper-schema-generator-plugin/src/test/resources/custom-item-converter/CustomUser.kt +++ b/hll/dynamodb-mapper/dynamodb-mapper-schema-generator-plugin/src/test/resources/custom-item-converter/CustomUser.kt @@ -2,9 +2,8 @@ package org.example import aws.sdk.kotlin.hll.dynamodbmapper.DynamoDbItem import aws.sdk.kotlin.hll.dynamodbmapper.DynamoDbPartitionKey -import my.custom.item.converter.MyCustomUserConverter -@DynamoDbItem(converter = MyCustomUserConverter::class) +@DynamoDbItem("my.custom.item.converter.MyCustomUserConverter") public data class CustomUser( @DynamoDbPartitionKey var id: Int = 1, var givenName: String = "Johnny", diff --git a/hll/dynamodb-mapper/tests/dynamodb-mapper-annotation-processor-test/common/test/aws/sdk/kotlin/hll/dynamodbmapper/tests/processor/data/UserTest.kt b/hll/dynamodb-mapper/tests/dynamodb-mapper-annotation-processor-test/common/test/aws/sdk/kotlin/hll/dynamodbmapper/tests/processor/data/UserTest.kt index 89983af4fa2..e2082c04c42 100644 --- a/hll/dynamodb-mapper/tests/dynamodb-mapper-annotation-processor-test/common/test/aws/sdk/kotlin/hll/dynamodbmapper/tests/processor/data/UserTest.kt +++ b/hll/dynamodb-mapper/tests/dynamodb-mapper-annotation-processor-test/common/test/aws/sdk/kotlin/hll/dynamodbmapper/tests/processor/data/UserTest.kt @@ -5,7 +5,7 @@ package aws.sdk.kotlin.hll.dynamodbmapper.tests.processor.data import aws.sdk.kotlin.hll.dynamodbmapper.model.itemOf -import aws.sdk.kotlin.hll.dynamodbmapper.tests.processor.data.dynamodbmapper.generatedschemas.UserConverter +import aws.sdk.kotlin.hll.dynamodbmapper.tests.processor.data.aws.sdk.kotlin.hll.dynamodbmapper.generatedschemas.UserConverter import aws.sdk.kotlin.services.dynamodb.model.AttributeValue import kotlin.test.Test import kotlin.test.assertEquals diff --git a/settings.gradle.kts b/settings.gradle.kts index 2e2f9742a99..76d43ea1650 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -75,7 +75,7 @@ if ("dynamodb".isBootstrappedService) { include(":hll:dynamodb-mapper:dynamodb-mapper-ops-codegen") include(":hll:dynamodb-mapper:dynamodb-mapper-schema-codegen") include(":hll:dynamodb-mapper:dynamodb-mapper-annotations") -// include(":hll:dynamodb-mapper:tests:dynamodb-mapper-annotation-processor-test") + include(":hll:dynamodb-mapper:tests:dynamodb-mapper-annotation-processor-test") include(":hll:dynamodb-mapper:dynamodb-mapper-schema-generator-plugin") include(":hll:dynamodb-mapper:tests:dynamodb-mapper-schema-generator-plugin-test") } else { From ff56fd11c988f8a9fce31036014bfc27889b2409 Mon Sep 17 00:00:00 2001 From: Matas Lauzadis Date: Fri, 20 Sep 2024 15:35:38 -0400 Subject: [PATCH 7/9] 2nd --- .../src/aws/sdk/kotlin/hll/dynamodbmapper/Annotations.kt | 7 +++---- .../codegen/annotations/rendering/SchemaRenderer.kt | 1 - 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/hll/dynamodb-mapper/dynamodb-mapper-annotations/common/src/aws/sdk/kotlin/hll/dynamodbmapper/Annotations.kt b/hll/dynamodb-mapper/dynamodb-mapper-annotations/common/src/aws/sdk/kotlin/hll/dynamodbmapper/Annotations.kt index 62c24e8eb6f..e102c7f49c4 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper-annotations/common/src/aws/sdk/kotlin/hll/dynamodbmapper/Annotations.kt +++ b/hll/dynamodb-mapper/dynamodb-mapper-annotations/common/src/aws/sdk/kotlin/hll/dynamodbmapper/Annotations.kt @@ -14,13 +14,12 @@ public annotation class DynamoDbAttribute(val name: String) /** * Specifies that this class/interface describes an item type in a table. All public properties of this type will be mapped to * attributes unless they are explicitly ignored. - * @param converter A class reference of the item converter to be used for converting this annotated class/interface. + * @param converterName The fully qualified name of the item converter to be used for converting this class/interface. * If not set, one will be automatically generated. */ +// FIXME Update to take a KClass, which will require splitting codegen modules due to a circular dependency @Target(AnnotationTarget.CLASS) -// FIXME Update to take a KClass> once KSP bug is fixed -// https://github.com/google/ksp/issues/1129 -public annotation class DynamoDbItem(val converterName: String) +public annotation class DynamoDbItem(val converterName: String = "") /** * Specifies that this property is the primary key for the item. Every top-level [DynamoDbItem] to be used in a table diff --git a/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/SchemaRenderer.kt b/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/SchemaRenderer.kt index f23bea808a9..d3a2a49d9c3 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/SchemaRenderer.kt +++ b/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/src/main/kotlin/aws/sdk/kotlin/hll/dynamodbmapper/codegen/annotations/rendering/SchemaRenderer.kt @@ -23,7 +23,6 @@ import com.google.devtools.ksp.symbol.* * @param classDeclaration the [KSClassDeclaration] of the class * @param ctx the [RenderContext] of the renderer */ -@OptIn(KspExperimental::class) internal class SchemaRenderer( private val classDeclaration: KSClassDeclaration, private val ctx: RenderContext, From c2e4bd46091396f03aff07773508475e0c82dece Mon Sep 17 00:00:00 2001 From: Matas Lauzadis Date: Mon, 23 Sep 2024 14:42:23 -0400 Subject: [PATCH 8/9] \n --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 70d94d3e4a4..264fead8835 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,4 +17,4 @@ kotlinx.atomicfu.enableJvmIrTransformation=true kotlinx.atomicfu.enableNativeIrTransformation=false # https://github.com/google/ksp/blob/main/docs/ksp2.md -ksp.useKSP2=true \ No newline at end of file +ksp.useKSP2=true From a6c21da8e7f4a05091d86a8e3b7c68b1b94f4b62 Mon Sep 17 00:00:00 2001 From: Matas Lauzadis Date: Mon, 23 Sep 2024 14:42:35 -0400 Subject: [PATCH 9/9] disable publication of dynamodb-mapper-ops-codegen --- .../build.gradle.kts | 21 ------------------- .../build.gradle.kts | 1 - 2 files changed, 22 deletions(-) diff --git a/hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/build.gradle.kts b/hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/build.gradle.kts index 4c381da390f..b9907e8c733 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/build.gradle.kts +++ b/hll/dynamodb-mapper/dynamodb-mapper-ops-codegen/build.gradle.kts @@ -9,7 +9,6 @@ extra["moduleName"] = "aws.sdk.kotlin.hll.dynamodbmapper.codegen.ops" plugins { alias(libs.plugins.kotlin.jvm) - `maven-publish` } dependencies { @@ -48,23 +47,3 @@ tasks.test { exceptionFormat = org.gradle.api.tasks.testing.logging.TestExceptionFormat.FULL } } - -val sdkVersion: String by project -group = "aws.sdk.kotlin" -version = sdkVersion - -val sourcesJar by tasks.creating(Jar::class) { - group = "publishing" - description = "Assembles Kotlin sources jar" - archiveClassifier.set("sources") - from(sourceSets.getByName("main").allSource) -} - -publishing { - publications { - create("dynamodb-mapper-ops-codegen") { - from(components["java"]) - artifact(sourcesJar) - } - } -} diff --git a/hll/dynamodb-mapper/dynamodb-mapper-schema-generator-plugin/build.gradle.kts b/hll/dynamodb-mapper/dynamodb-mapper-schema-generator-plugin/build.gradle.kts index e6cb7c0ce6c..7cf14225da4 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper-schema-generator-plugin/build.gradle.kts +++ b/hll/dynamodb-mapper/dynamodb-mapper-schema-generator-plugin/build.gradle.kts @@ -177,7 +177,6 @@ tasks.withType { dependsOn(":hll:dynamodb-mapper:dynamodb-mapper-annotations:publishToMavenLocal") dependsOn(":hll:dynamodb-mapper:dynamodb-mapper-codegen:publishToMavenLocal") dependsOn(":hll:dynamodb-mapper:dynamodb-mapper-schema-codegen:publishToMavenLocal") - dependsOn(":hll:dynamodb-mapper:dynamodb-mapper-ops-codegen:publishToMavenLocal") dependsOn(":hll:dynamodb-mapper:dynamodb-mapper-schema-generator-plugin:publishToMavenLocal") dependsOn(":hll:dynamodb-mapper:dynamodb-mapper:publishToMavenLocal") dependsOn(":hll:hll-codegen:publishToMavenLocal")