Skip to content

Commit

Permalink
refactor(model-api-gen): fix parameter names and types
Browse files Browse the repository at this point in the history
  • Loading branch information
mhuster23 committed Jan 12, 2024
1 parent 76e1ed0 commit 6d1c10f
Show file tree
Hide file tree
Showing 5 changed files with 104 additions and 104 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -75,113 +75,113 @@ internal class ConceptFileGenerator(
}

private fun FileSpec.Builder.addConceptReferences(
feature: ProcessedReferenceLink,
referenceLink: ProcessedReferenceLink,
receiverType: ParameterizedTypeName,
) {
val targetType = feature.type.resolved.nodeWrapperInterfaceType().copy(nullable = feature.optional)
val targetType = referenceLink.type.resolved.nodeWrapperInterfaceType().copy(nullable = referenceLink.optional)
val rawTargetType = INode::class.asTypeName().copy(nullable = true)

addRegularConceptReference(feature, targetType, receiverType)
addOrNullConceptReference(feature, targetType, receiverType)
addRawConceptReference(feature, rawTargetType, receiverType)
addRegularConceptReference(referenceLink, targetType, receiverType)
addOrNullConceptReference(referenceLink, targetType, receiverType)
addRawConceptReference(referenceLink, rawTargetType, receiverType)
}

private fun FileSpec.Builder.addRawConceptReference(
feature: ProcessedRole,
referenceLink: ProcessedReferenceLink,
rawTargetType: TypeName,
receiverType: ParameterizedTypeName,
) {
val refType = List::class.asTypeName().parameterizedBy(rawTargetType)
val getterSpec = FunSpec.getterBuilder().runBuild {
addStatement("return map { it.%N }", "raw_" + feature.generatedName)
addStatement("return map { it.%N }", "raw_" + referenceLink.generatedName)
}

val propertySpec = PropertySpec.builder("raw_" + feature.generatedName, refType).runBuild {
val propertySpec = PropertySpec.builder("raw_" + referenceLink.generatedName, refType).runBuild {
receiver(receiverType)
getter(getterSpec)
}
addProperty(propertySpec)
}

private fun FileSpec.Builder.addOrNullConceptReference(
feature: ProcessedRole,
referenceLink: ProcessedReferenceLink,
targetType: TypeName,
receiverType: ParameterizedTypeName,
) {
val refType = List::class.asTypeName().parameterizedBy(targetType.copy(nullable = true))

val getterSpec = FunSpec.getterBuilder().runBuild {
addStatement("return map { it.%N }", feature.generatedName + "_orNull")
addStatement("return map { it.%N }", referenceLink.generatedName + "_orNull")
}

val propertySpec = PropertySpec.builder(feature.generatedName + "_orNull", refType).runBuild {
val propertySpec = PropertySpec.builder(referenceLink.generatedName + "_orNull", refType).runBuild {
receiver(receiverType)
getter(getterSpec)
}
addProperty(propertySpec)
}

private fun FileSpec.Builder.addRegularConceptReference(
feature: ProcessedRole,
referenceLink: ProcessedReferenceLink,
targetType: TypeName,
receiverType: ParameterizedTypeName,
) {
val refType = List::class.asTypeName().parameterizedBy(targetType)

val getterSpec = FunSpec.getterBuilder().runBuild {
addStatement("return map { it.%N }", feature.generatedName)
addStatement("return map { it.%N }", referenceLink.generatedName)
}

val propertySpec = PropertySpec.builder(feature.generatedName, refType).runBuild {
val propertySpec = PropertySpec.builder(referenceLink.generatedName, refType).runBuild {
receiver(receiverType)
getter(getterSpec)
}
addProperty(propertySpec)
}

private fun FileSpec.Builder.addConceptChildLink(
feature: ProcessedChildLink,
childLink: ProcessedChildLink,
receiverType: ParameterizedTypeName,
) {
val targetType = feature.type.resolved.nodeWrapperInterfaceType()
val targetType = childLink.type.resolved.nodeWrapperInterfaceType()
val returnType = List::class.asTypeName().parameterizedBy(targetType)
val getterSpec = FunSpec.getterBuilder().runBuild {
addStatement("return flatMap { it.%N }", feature.generatedName)
addStatement("return flatMap { it.%N }", childLink.generatedName)
}

val propertySpec = PropertySpec.builder(feature.generatedName, returnType).runBuild {
val propertySpec = PropertySpec.builder(childLink.generatedName, returnType).runBuild {
receiver(receiverType)
getter(getterSpec)
}
addProperty(propertySpec)
}

private fun FileSpec.Builder.addRawConceptProperty(
feature: ProcessedProperty,
property: ProcessedProperty,
receiverType: ParameterizedTypeName,
) {
val returnType = List::class.asTypeName().parameterizedBy(String::class.asTypeName().copy(nullable = true))

val getterSpec = FunSpec.getterBuilder().runBuild {
addStatement("return map { it.%N }", "raw_" + feature.generatedName)
addStatement("return map { it.%N }", "raw_" + property.generatedName)
}

val propertySpec = PropertySpec.builder("raw_" + feature.generatedName, returnType).runBuild {
val propertySpec = PropertySpec.builder("raw_" + property.generatedName, returnType).runBuild {
receiver(receiverType)
getter(getterSpec)
}
addProperty(propertySpec)
}

private fun FileSpec.Builder.addRegularConceptProperty(
feature: ProcessedProperty,
property: ProcessedProperty,
receiverType: ParameterizedTypeName,
) {
val returnType = List::class.asTypeName().parameterizedBy(feature.asKotlinType(alwaysUseNonNullableProperties))
val returnType = List::class.asTypeName().parameterizedBy(property.asKotlinType(alwaysUseNonNullableProperties))
val getterSpec = FunSpec.getterBuilder().runBuild {
addStatement("return map { it.%N }", feature.generatedName)
addStatement("return map { it.%N }", property.generatedName)
}
val propertySpec = PropertySpec.builder(feature.generatedName, returnType).runBuild {
val propertySpec = PropertySpec.builder(property.generatedName, returnType).runBuild {
receiver(receiverType)
getter(getterSpec)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,35 +94,35 @@ internal class ConceptWrapperInterfaceGenerator(
}
}

private fun TypeSpec.Builder.addConceptWrapperInterfaceReferenceLink(feature: ProcessedReferenceLink) {
val propertySpec = PropertySpec.builder(feature.generatedName, feature.generatedReferenceLinkType()).runBuild {
getter(FunSpec.getterBuilder().addCode(feature.returnKotlinRef()).build())
addDeprecationIfNecessary(feature)
private fun TypeSpec.Builder.addConceptWrapperInterfaceReferenceLink(referenceLink: ProcessedReferenceLink) {
val propertySpec = PropertySpec.builder(referenceLink.generatedName, referenceLink.generatedReferenceLinkType()).runBuild {
getter(FunSpec.getterBuilder().addCode(referenceLink.returnKotlinRef()).build())
addDeprecationIfNecessary(referenceLink)
}

addProperty(propertySpec)
}

private fun TypeSpec.Builder.addConceptWrapperInterfaceChildLink(feature: ProcessedChildLink) {
val propertySpec = PropertySpec.builder(feature.generatedName, feature.generatedChildLinkType()).runBuild {
getter(FunSpec.getterBuilder().addCode(feature.returnKotlinRef()).build())
addDeprecationIfNecessary(feature)
private fun TypeSpec.Builder.addConceptWrapperInterfaceChildLink(childLink: ProcessedChildLink) {
val propertySpec = PropertySpec.builder(childLink.generatedName, childLink.generatedChildLinkType()).runBuild {
getter(FunSpec.getterBuilder().addCode(childLink.returnKotlinRef()).build())
addDeprecationIfNecessary(childLink)
}

addProperty(propertySpec)
}

private fun TypeSpec.Builder.addConceptWrapperInterfaceProperty(feature: ProcessedProperty) {
private fun TypeSpec.Builder.addConceptWrapperInterfaceProperty(property: ProcessedProperty) {
val propertySpec = PropertySpec.builder(
name = feature.generatedName,
name = property.generatedName,
type = GeneratedProperty::class.asClassName()
.parameterizedBy(feature.asKotlinType(alwaysUseNonNullableProperties)),
.parameterizedBy(property.asKotlinType(alwaysUseNonNullableProperties)),
).runBuild {
val getterSpec = FunSpec.getterBuilder().runBuild {
addCode(feature.returnKotlinRef())
addCode(property.returnKotlinRef())
}
getter(getterSpec)
addDeprecationIfNecessary(feature)
addDeprecationIfNecessary(property)
}

addProperty(propertySpec)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,19 +99,19 @@ internal class ModelQLFileGenerator(
}

private fun FileSpec.Builder.addReferenceGettersForStepType(
feature: ProcessedReferenceLink,
referenceLink: ProcessedReferenceLink,
stepType: ClassName,
) {
val targetType = feature.type.resolved.nodeWrapperInterfaceType().copy(nullable = feature.optional)
val targetType = referenceLink.type.resolved.nodeWrapperInterfaceType().copy(nullable = referenceLink.optional)
val inputType = stepType.parameterizedBy(concept.nodeWrapperInterfaceType())
val outputType = stepType.parameterizedBy(targetType.copy(nullable = false))
val outputTypeNullable = stepType.parameterizedBy(targetType.copy(nullable = true))
addRegularReferenceGetter(feature, inputType, outputType)
addOrNullReferenceGetter(feature, inputType, outputTypeNullable)
addRegularReferenceGetter(referenceLink, inputType, outputType)
addOrNullReferenceGetter(referenceLink, inputType, outputTypeNullable)
}

private fun FileSpec.Builder.addOrNullReferenceGetter(
feature: ProcessedReferenceLink,
referenceLink: ProcessedReferenceLink,
inputType: ParameterizedTypeName,
outputType: ParameterizedTypeName,
) {
Expand All @@ -120,11 +120,11 @@ internal class ModelQLFileGenerator(
"return %T.referenceOrNull(this, %T.%N)",
TypedModelQL::class.asTypeName(),
concept.conceptWrapperInterfaceClass(),
feature.generatedName,
referenceLink.generatedName,
)
}

val propertySpec = PropertySpec.builder(feature.generatedName + "_orNull", outputType).runBuild {
val propertySpec = PropertySpec.builder(referenceLink.generatedName + "_orNull", outputType).runBuild {
receiver(inputType)
getter(getterImpl)
}
Expand All @@ -133,7 +133,7 @@ internal class ModelQLFileGenerator(
}

private fun FileSpec.Builder.addRegularReferenceGetter(
feature: ProcessedReferenceLink,
referenceLink: ProcessedReferenceLink,
inputType: ParameterizedTypeName,
outputType: ParameterizedTypeName,
) {
Expand All @@ -142,11 +142,11 @@ internal class ModelQLFileGenerator(
"return %T.reference(this, %T.%N)",
TypedModelQL::class.asTypeName(),
concept.conceptWrapperInterfaceClass(),
feature.generatedName,
referenceLink.generatedName,
)
}

val propertySpec = PropertySpec.builder(feature.generatedName, outputType).runBuild {
val propertySpec = PropertySpec.builder(referenceLink.generatedName, outputType).runBuild {
receiver(inputType)
getter(getterImpl)
}
Expand Down Expand Up @@ -219,22 +219,22 @@ internal class ModelQLFileGenerator(
addProperty(propertySpec)
}

private fun FileSpec.Builder.addPropertySetter(feature: ProcessedProperty) {
private fun FileSpec.Builder.addPropertySetter(property: ProcessedProperty) {
val inputStepType = IMonoStep::class.asTypeName()
.parameterizedBy(concept.nodeWrapperInterfaceType())

val parameterType = IMonoStep::class.asTypeName()
.parameterizedBy(feature.asKotlinType(alwaysUseNonNullableProperties))
.parameterizedBy(property.asKotlinType(alwaysUseNonNullableProperties))

val setterSpec = FunSpec.builder(feature.setterName()).runBuild {
val setterSpec = FunSpec.builder(property.setterName()).runBuild {
returns(inputStepType)
receiver(inputStepType)
addParameter("value", parameterType)
addStatement(
"return %T.setProperty(this, %T.%N, value)",
TypedModelQL::class.asTypeName(),
concept.conceptWrapperInterfaceClass(),
feature.generatedName,
property.generatedName,
)
}

Expand Down
Loading

0 comments on commit 6d1c10f

Please sign in to comment.