Skip to content

Commit 7a1bd07

Browse files
committed
Formatting
1 parent 4bc9c22 commit 7a1bd07

File tree

11 files changed

+1625
-1511
lines changed

11 files changed

+1625
-1511
lines changed

anvil/anvil-compiler/src/main/java/com/duckduckgo/anvil/compiler/ContributeToActivityStarterCodeGenerator.kt

Lines changed: 109 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -27,32 +27,38 @@ import com.squareup.anvil.compiler.internal.fqName
2727
import com.squareup.anvil.compiler.internal.reference.*
2828
import com.squareup.kotlinpoet.*
2929
import com.squareup.kotlinpoet.ParameterizedTypeName.Companion.parameterizedBy
30-
import java.io.File
31-
import javax.inject.Inject
3230
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
3331
import org.jetbrains.kotlin.name.FqName
3432
import org.jetbrains.kotlin.psi.KtFile
33+
import java.io.File
34+
import javax.inject.Inject
3535

3636
/** This Anvil code generator allows generates a backend service API and its dagger bindings. */
3737
@OptIn(ExperimentalAnvilApi::class)
3838
@AutoService(CodeGenerator::class)
3939
class ContributeToActivityStarterCodeGenerator : CodeGenerator {
40-
4140
override fun isApplicable(context: AnvilContext): Boolean = true
4241

43-
override fun generateCode(codeGenDir: File, module: ModuleDescriptor, projectFiles: Collection<KtFile>): Collection<GeneratedFileWithSources> {
44-
return projectFiles.classAndInnerClassReferences(module)
42+
override fun generateCode(
43+
codeGenDir: File,
44+
module: ModuleDescriptor,
45+
projectFiles: Collection<KtFile>,
46+
): Collection<GeneratedFileWithSources> =
47+
projectFiles
48+
.classAndInnerClassReferences(module)
4549
.toList()
4650
.filter { it.isAnnotatedWith(ContributeToActivityStarter::class.fqName) }
4751
.flatMap {
4852
listOf(
4953
generateParameterToActivityMapper(it, codeGenDir, module),
5054
)
51-
}
52-
.toList()
53-
}
55+
}.toList()
5456

55-
private fun generateParameterToActivityMapper(vmClass: ClassReference.Psi, codeGenDir: File, module: ModuleDescriptor): GeneratedFileWithSources {
57+
private fun generateParameterToActivityMapper(
58+
vmClass: ClassReference.Psi,
59+
codeGenDir: File,
60+
module: ModuleDescriptor,
61+
): GeneratedFileWithSources {
5662
val generatedPackage = vmClass.packageFqName.toString()
5763
val moduleClassName = "${vmClass.shortName}_ActivityMapper"
5864

@@ -65,13 +71,14 @@ class ContributeToActivityStarterCodeGenerator : CodeGenerator {
6571

6672
val mapperAnnotations = vmClass.annotations.filter { it.fqName == ContributeToActivityStarter::class.fqName }
6773

68-
val content = FileSpec.buildFile(generatedPackage, moduleClassName) {
69-
for (annotation in mapperAnnotations) {
70-
val paramsType = annotation.paramsTypeOrNull()!!
71-
val screenName = annotation.screenNameOrNull().orEmpty()
72-
addType(createMapperClass(paramsType, screenName, vmClass, module)).build()
74+
val content =
75+
FileSpec.buildFile(generatedPackage, moduleClassName) {
76+
for (annotation in mapperAnnotations) {
77+
val paramsType = annotation.paramsTypeOrNull()!!
78+
val screenName = annotation.screenNameOrNull().orEmpty()
79+
addType(createMapperClass(paramsType, screenName, vmClass, module)).build()
80+
}
7381
}
74-
}
7582

7683
return createGeneratedFile(codeGenDir, generatedPackage, moduleClassName, content, vmClass.containingFileAsJavaFile)
7784
}
@@ -84,172 +91,166 @@ class ContributeToActivityStarterCodeGenerator : CodeGenerator {
8491
): TypeSpec {
8592
val moduleClassName = "${vmClass.shortName}_${paramsType.shortName}_Mapper"
8693

87-
return TypeSpec.classBuilder(moduleClassName)
94+
return TypeSpec
95+
.classBuilder(moduleClassName)
8896
.addAnnotation(
8997
AnnotationSpec
90-
.builder(ContributesMultibinding::class).addMember("scope = %T::class", appScopeFqName.asClassName(module))
98+
.builder(ContributesMultibinding::class)
99+
.addMember("scope = %T::class", appScopeFqName.asClassName(module))
91100
.build(),
92-
)
93-
.addSuperinterface(paramToActivityMapperFqName.asClassName(module))
101+
).addSuperinterface(paramToActivityMapperFqName.asClassName(module))
94102
.addPrimaryConstructor()
95103
.addProperty(
96-
PropertySpec.builder("moshi", moshi.asClassName(module), KModifier.PRIVATE)
104+
PropertySpec
105+
.builder("moshi", moshi.asClassName(module), KModifier.PRIVATE)
97106
.initializer("Moshi.Builder().add(%T()).build()", kotlinJsonObjectAdapter.asClassName(module))
98107
.build(),
99-
)
100-
.addFunction(
101-
FunSpec.builder("map")
108+
).addFunction(
109+
FunSpec
110+
.builder("map")
102111
.addModifiers(KModifier.OVERRIDE)
103112
.addParameter(
104113
"activityParams",
105114
activityParamsFqName.asClassName(module),
106-
)
107-
.returns(
108-
Class::class.asClassName().parameterizedBy(
109-
WildcardTypeName.producerOf(appCompatActivityFqName.asClassName(module)),
110-
).copy(nullable = true),
111-
)
112-
.addCode(
115+
).returns(
116+
Class::class
117+
.asClassName()
118+
.parameterizedBy(
119+
WildcardTypeName.producerOf(appCompatActivityFqName.asClassName(module)),
120+
).copy(nullable = true),
121+
).addCode(
113122
"""
114-
return if (activityParams is %T) {
115-
%T::class.java
116-
} else {
117-
null
118-
}
123+
return if (activityParams is %T) {
124+
%T::class.java
125+
} else {
126+
null
127+
}
119128
""".trimIndent(),
120129
paramsType.asClassName(),
121130
vmClass.asClassName(),
122-
)
123-
.build(),
124-
)
125-
.apply {
131+
).build(),
132+
).apply {
126133
if (screenName.isBlank()) {
127134
addFunction(emptyDeepLinkMapper(module))
128135
} else {
129136
addFunction(createDeeplinkMapper(module, paramsType, screenName))
130137
addFunction(createTryCreateObjectInstance(module))
131138
addFunction(createTryCreateActivityParamsInstance(module))
132139
}
133-
}
134-
.build()
140+
}.build()
135141
}
136142

137143
private fun TypeSpec.Builder.addPrimaryConstructor(): TypeSpec.Builder {
138-
val constructor = FunSpec.constructorBuilder()
139-
.addAnnotation(AnnotationSpec.builder(Inject::class).build())
140-
.build()
144+
val constructor =
145+
FunSpec
146+
.constructorBuilder()
147+
.addAnnotation(AnnotationSpec.builder(Inject::class).build())
148+
.build()
141149

142150
return this.primaryConstructor(constructor)
143151
}
144152

145-
private fun AnnotationReference.paramsTypeOrNull(): ClassReference? {
146-
return argumentAt("paramsType", 0)?.value()
147-
}
153+
private fun AnnotationReference.paramsTypeOrNull(): ClassReference? = argumentAt("paramsType", 0)?.value()
148154

149-
private fun AnnotationReference.screenNameOrNull(): String? {
150-
return argumentAt("screenName", 1)?.value() as? String?
151-
}
155+
private fun AnnotationReference.screenNameOrNull(): String? = argumentAt("screenName", 1)?.value() as? String?
152156

153-
private fun emptyDeepLinkMapper(module: ModuleDescriptor): FunSpec {
154-
return FunSpec.builder("map")
157+
private fun emptyDeepLinkMapper(module: ModuleDescriptor): FunSpec =
158+
FunSpec
159+
.builder("map")
155160
.addModifiers(KModifier.OVERRIDE)
156161
.addParameter(
157162
"deeplinkActivityParams",
158163
deeplinkActivityParamsFqName.asClassName(module),
159-
)
160-
.returns(
164+
).returns(
161165
activityParamsFqName.asClassName(module).copy(nullable = true),
162-
)
163-
.addCode(
166+
).addCode(
164167
"""
165-
return null
168+
return null
166169
""".trimIndent(),
167-
)
168-
.build()
169-
}
170+
).build()
170171

171-
private fun createDeeplinkMapper(module: ModuleDescriptor, paramsType: ClassReference, screenName: String): FunSpec {
172-
return FunSpec.builder("map")
172+
private fun createDeeplinkMapper(
173+
module: ModuleDescriptor,
174+
paramsType: ClassReference,
175+
screenName: String,
176+
): FunSpec =
177+
FunSpec
178+
.builder("map")
173179
.addModifiers(KModifier.OVERRIDE)
174180
.addParameter(
175181
"deeplinkActivityParams",
176182
deeplinkActivityParamsFqName.asClassName(module),
177-
)
178-
.returns(
183+
).returns(
179184
activityParamsFqName.asClassName(module).copy(nullable = true),
180-
)
181-
.addCode(
185+
).addCode(
182186
"""
183-
val screenName = deeplinkActivityParams.screenName
184-
if (screenName.isNullOrEmpty()) {
185-
return null
186-
}
187-
188-
val definedScreenName = %S
189-
if (definedScreenName.isNullOrEmpty()) {
190-
return null
191-
}
192-
193-
return if (screenName == definedScreenName) {
194-
if (deeplinkActivityParams.jsonArguments.isEmpty()) {
195-
val instance = tryCreateObjectInstance(%T::class.java)
196-
if (instance != null) {
197-
return instance
198-
}
187+
val screenName = deeplinkActivityParams.screenName
188+
if (screenName.isNullOrEmpty()) {
189+
return null
190+
}
191+
192+
val definedScreenName = %S
193+
if (definedScreenName.isNullOrEmpty()) {
194+
return null
195+
}
196+
197+
return if (screenName == definedScreenName) {
198+
if (deeplinkActivityParams.jsonArguments.isEmpty()) {
199+
val instance = tryCreateObjectInstance(%T::class.java)
200+
if (instance != null) {
201+
return instance
199202
}
200-
tryCreateActivityParams(%T::class.java, deeplinkActivityParams)
201-
} else {
202-
null
203203
}
204+
tryCreateActivityParams(%T::class.java, deeplinkActivityParams)
205+
} else {
206+
null
207+
}
204208
""".trimIndent(),
205209
screenName,
206210
paramsType.asClassName(),
207211
paramsType.asClassName(),
208-
)
209-
.build()
210-
}
212+
).build()
211213

212-
private fun createTryCreateObjectInstance(module: ModuleDescriptor): FunSpec {
213-
return FunSpec.builder("tryCreateObjectInstance")
214+
private fun createTryCreateObjectInstance(module: ModuleDescriptor): FunSpec =
215+
FunSpec
216+
.builder("tryCreateObjectInstance")
214217
.addModifiers(KModifier.PRIVATE)
215218
.addParameter("clazz", Class::class.asClassName().parameterizedBy(WildcardTypeName.producerOf(activityParamsFqName.asClassName(module))))
216219
.addCode(
217-
CodeBlock.builder()
220+
CodeBlock
221+
.builder()
218222
.add(
219223
"""
220-
return kotlin.runCatching {
221-
%T.getRawType(clazz).kotlin.objectInstance as %T
222-
}.getOrNull()
224+
return kotlin.runCatching {
225+
%T.getRawType(clazz).kotlin.objectInstance as %T
226+
}.getOrNull()
223227
""".trimIndent(),
224228
moshiTypes.asClassName(module),
225229
activityParamsFqName.asClassName(module),
226230
).build(),
227-
)
228-
.returns(activityParamsFqName.asClassName(module).copy(nullable = true))
231+
).returns(activityParamsFqName.asClassName(module).copy(nullable = true))
229232
.build()
230-
}
231233

232-
private fun createTryCreateActivityParamsInstance(module: ModuleDescriptor): FunSpec {
233-
return FunSpec.builder("tryCreateActivityParams")
234+
private fun createTryCreateActivityParamsInstance(module: ModuleDescriptor): FunSpec =
235+
FunSpec
236+
.builder("tryCreateActivityParams")
234237
.addModifiers(KModifier.PRIVATE)
235238
.addParameter("clazz", Class::class.asClassName().parameterizedBy(WildcardTypeName.producerOf(activityParamsFqName.asClassName(module))))
236239
.addParameter(
237240
"deeplinkActivityParams",
238241
deeplinkActivityParamsFqName.asClassName(module),
239-
)
240-
.addCode(
241-
CodeBlock.builder()
242+
).addCode(
243+
CodeBlock
244+
.builder()
242245
.add(
243246
"""
244-
return kotlin.runCatching {
245-
moshi.adapter(clazz).fromJson(deeplinkActivityParams.jsonArguments)
246-
}.getOrNull()
247+
return kotlin.runCatching {
248+
moshi.adapter(clazz).fromJson(deeplinkActivityParams.jsonArguments)
249+
}.getOrNull()
247250
""".trimIndent(),
248251
).build(),
249-
)
250-
.returns(activityParamsFqName.asClassName(module).copy(nullable = true))
252+
).returns(activityParamsFqName.asClassName(module).copy(nullable = true))
251253
.build()
252-
}
253254

254255
companion object {
255256
private val appScopeFqName = FqName("com.duckduckgo.di.scopes.AppScope")

0 commit comments

Comments
 (0)