diff --git a/api/src/main/kotlin/io/spine/protodata/ast/Coordinates.kt b/api/src/main/kotlin/io/spine/protodata/ast/Coordinates.kt index 7d14a92fe..a9ea1dd72 100644 --- a/api/src/main/kotlin/io/spine/protodata/ast/Coordinates.kt +++ b/api/src/main/kotlin/io/spine/protodata/ast/Coordinates.kt @@ -161,7 +161,7 @@ private fun Location.toSpan(): Span { } /** - * Obtains coordinates for the file this [GenericDescriptor]. + * Obtains coordinates for this [GenericDescriptor]. */ internal fun GenericDescriptor.coordinates(): Coordinates { val fromResources = withSourceLines() diff --git a/api/src/main/kotlin/io/spine/protodata/ast/OneofGroupExts.kt b/api/src/main/kotlin/io/spine/protodata/ast/OneofGroupExts.kt index eeb43c206..f80b0e8b8 100644 --- a/api/src/main/kotlin/io/spine/protodata/ast/OneofGroupExts.kt +++ b/api/src/main/kotlin/io/spine/protodata/ast/OneofGroupExts.kt @@ -34,3 +34,9 @@ public val OneofGroup.ref: OneofRef type = declaringType name = this@ref.name } + +/** + * The qualified name of this [OneofGroup]. + */ +public val OneofGroup.qualifiedName: String + get() = "${declaringType.qualifiedName}.${name.value}" diff --git a/backend/src/main/kotlin/io/spine/protodata/backend/event/MessageEvents.kt b/backend/src/main/kotlin/io/spine/protodata/backend/event/MessageEvents.kt index 03d2784c5..130db8fa5 100644 --- a/backend/src/main/kotlin/io/spine/protodata/backend/event/MessageEvents.kt +++ b/backend/src/main/kotlin/io/spine/protodata/backend/event/MessageEvents.kt @@ -30,7 +30,6 @@ import com.google.protobuf.Descriptors.Descriptor import com.google.protobuf.Descriptors.FieldDescriptor import com.google.protobuf.Descriptors.OneofDescriptor import io.spine.base.EventMessage -import io.spine.protodata.ast.Documentation import io.spine.protodata.ast.ProtoFileHeader import io.spine.protodata.ast.event.FieldEntered import io.spine.protodata.ast.event.FieldExited @@ -46,13 +45,13 @@ import io.spine.protodata.ast.event.typeDiscovered import io.spine.protodata.ast.event.typeEntered import io.spine.protodata.ast.event.typeExited import io.spine.protodata.ast.event.typeOptionDiscovered -import io.spine.protodata.ast.oneofGroup import io.spine.protodata.ast.produceOptionEvents import io.spine.protodata.ast.withAbsoluteFile import io.spine.protodata.protobuf.name import io.spine.protodata.protobuf.realNestedTypes import io.spine.protodata.protobuf.toField import io.spine.protodata.protobuf.toMessageType +import io.spine.protodata.protobuf.toOneOfGroup /** * Produces events for a message. @@ -135,19 +134,14 @@ internal class MessageEvents(header: ProtoFileHeader) : DeclarationEvents.produceOneofEvents( desc: OneofDescriptor ) { - val typeName = desc.containingType.name() - val documentation = Documentation.of(desc.containingType.file) + val containingType = desc.containingType.name() val oneofName = desc.name() - val oneofGroup = oneofGroup { - name = oneofName - declaringType = typeName - doc = documentation.forOneof(desc) - } + val oneofGroup = desc.toOneOfGroup() val path = header.file yield( oneofGroupEntered { file = path - type = typeName + type = containingType group = oneofGroup } ) @@ -164,7 +158,7 @@ internal class MessageEvents(header: ProtoFileHeader) : DeclarationEvents()}` for the Protobuf `${qualifiedName}`.") - val className = javaClassName(header) + +/** + * Finds a Java class name, generated for the Protobuf type with this name. + * + * @param typeSystem The type system to be used for obtaining the header for the proto + * file in which this message type is declared. + */ +public fun TypeName.findJavaClassName(typeSystem: TypeSystem): ClassName? { + val header = typeSystem.findMessageOrEnum(this)?.second + val className = header?.let { javaClassName(it) } return className } /** - * Obtains a fully qualified Java enum type name, generated for the Protobuf enum with this name. + * Obtains a Java enum type name, generated for the Protobuf enum with this name. */ public fun TypeName.javaEnumName(accordingTo: ProtoFileHeader): EnumName = composeJavaTypeName(accordingTo, { diff --git a/pom.xml b/pom.xml index 008487bf8..638596cd7 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ all modules and does not describe the project structure per-subproject. --> io.spine.protodata ProtoData -0.93.10 +0.93.11 2015 @@ -110,7 +110,7 @@ all modules and does not describe the project structure per-subproject. io.spine spine-server - 2.0.0-SNAPSHOT.300 + 2.0.0-SNAPSHOT.301 compile @@ -206,13 +206,13 @@ all modules and does not describe the project structure per-subproject. io.spine.tools spine-testutil-server - 2.0.0-SNAPSHOT.300 + 2.0.0-SNAPSHOT.301 test io.spine.tools spine-time-testlib - 2.0.0-SNAPSHOT.200 + 2.0.0-SNAPSHOT.202 test diff --git a/version.gradle.kts b/version.gradle.kts index a59805bb2..0b9a33c02 100644 --- a/version.gradle.kts +++ b/version.gradle.kts @@ -32,4 +32,4 @@ * * For dependencies on Spine SDK module please see [io.spine.dependency.local.Spine]. */ -val protoDataVersion: String by extra("0.93.10") +val protoDataVersion: String by extra("0.93.11")