1+
12package love.forte.plugin.suspendtrans.gradle
23
34import love.forte.plugin.suspendtrans.configuration.*
@@ -6,7 +7,6 @@ import love.forte.plugin.suspendtrans.configuration.SuspendTransformConfiguratio
67import love.forte.plugin.suspendtrans.configuration.SuspendTransformConfigurations.jvmBlockingTransformer
78import org.gradle.api.Action
89import org.gradle.api.DomainObjectSet
9- import org.gradle.api.Named
1010import org.gradle.api.model.ObjectFactory
1111import org.gradle.api.provider.ListProperty
1212import org.gradle.api.provider.Property
@@ -26,51 +26,43 @@ annotation class SuspendTransformPluginExtensionSpecDslMarker
2626@SuspendTransformPluginExtensionSpecDslMarker
2727interface SuspendTransformPluginExtensionSpec
2828
29- interface NamedTransformerSpecListContainer : Named {
30- val platform: Provider <TargetPlatform >
31- val transformers: ListProperty <TransformerSpec >
29+ @SuspendTransformPluginExtensionSpecDslMarker
30+ interface SuspendTransformPluginExtensionClassInfoSpec : SuspendTransformPluginExtensionSpec {
31+ fun classInfo (action : Action <in ClassInfoSpec >)
32+ fun classInfo (action : ClassInfoSpec .() -> Unit )
3233}
3334
34- internal interface NamedTransformerSpecListContainerInternal : NamedTransformerSpecListContainer {
35- override val platform: Property <TargetPlatform >
36- }
35+ // TODO
36+ // interface SuspendTransformPluginExtensionSpecFactory {
37+ // fun createClassInfo(): ClassInfoSpec
38+ // fun createMarkAnnotation(): MarkAnnotationSpec
39+ // fun createFunctionInfo(): FunctionInfoSpec
40+ // fun createIncludeAnnotation(): IncludeAnnotationSpec
41+ // fun createCopyAnnotationExclude(): CopyAnnotationExcludeSpec
42+ // fun createRuntimeDependency(): RuntimeDependencySpec
43+ // fun createAnnotationDependency(): AnnotationDependencySpec
44+ // fun createTransformFunctionInfo(): TransformFunctionInfoSpec
45+ // fun createTransformReturnType(): TransformReturnTypeSpec
46+ // fun createTransformer(): TransformerSpec
47+ // }
48+ //
49+ // interface SuspendTransformPluginExtensionSpecFactoryAware {
50+ // val factory: SuspendTransformPluginExtensionSpecFactory
51+ // }
3752
3853/* *
3954 * @since 0.12.0
4055 */
56+ @Suppress(" unused" )
4157abstract class TransformersContainer
4258@Inject constructor (
4359 private val objects: ObjectFactory
4460) : SuspendTransformPluginExtensionSpec {
45- internal val _containers : MutableMap <TargetPlatform , ListProperty <TransformerSpec >> =
61+ internal val containers : MutableMap <TargetPlatform , ListProperty <TransformerSpec >> =
4662 mutableMapOf ()
4763
48- // private val _containers: NamedDomainObjectContainer<NamedTransformerSpecListContainerInternal> =
49- // objects.domainObjectContainer(NamedTransformerSpecListContainerInternal::class.java) { name ->
50- // val targetPlatform = try {
51- // TargetPlatform.valueOf(name)
52- // } catch (e: IllegalArgumentException) {
53- // throw IllegalArgumentException(
54- // "The name '$name' is not a valid TargetPlatform name. " +
55- // "Valid names: ${TargetPlatform.entries.joinToString { it.name }}",
56- // e
57- // )
58- // }
59- //
60- // objects.newInstance(
61- // NamedTransformerSpecListContainerInternal::class.java,
62- // name
63- // ).apply {
64- // platform.set(targetPlatform)
65- // }
66- // }
67-
68- // @ExperimentalTransformersContainerApi
69- // val containers: NamedDomainObjectContainer<out NamedTransformerSpecListContainer>
70- // get() = _containers
71-
7264 private fun getTransformersInternal (platform : TargetPlatform ): ListProperty <TransformerSpec > {
73- return _containers .computeIfAbsent(platform) { objects.listProperty(TransformerSpec ::class .java) }
65+ return containers .computeIfAbsent(platform) { objects.listProperty(TransformerSpec ::class .java) }
7466 }
7567
7668 /* *
@@ -217,6 +209,7 @@ abstract class TransformersContainer
217209/* *
218210 * @since 0.12.0
219211 */
212+ @Suppress(" unused" )
220213abstract class SuspendTransformPluginExtension
221214@Inject constructor (objects: ObjectFactory ) : SuspendTransformPluginExtensionSpec {
222215 /* *
@@ -279,25 +272,6 @@ abstract class SuspendTransformPluginExtension
279272 }
280273}
281274
282- @OptIn(InternalSuspendTransformConfigurationApi ::class )
283- internal fun SuspendTransformPluginExtension.toConfiguration (): SuspendTransformConfiguration {
284- return SuspendTransformConfiguration (
285- // 此处 Map 可能为 空,但是 List 不会有空的。
286- // 后续在使用的时候只需要判断一下 transformers 本身是不是空即可。
287- transformers = buildMap {
288- transformers._containers .forEach { targetPlatform, transformerListProperty ->
289- val list = transformerListProperty
290- .map { valueList -> valueList.map { it.toTransformer() } }
291- .getOrElse(emptyList())
292-
293- if (list.isNotEmpty()) {
294- put(targetPlatform, list)
295- }
296- }
297- },
298- )
299- }
300-
301275internal data class TransformerEntry (
302276 val targetPlatform : TargetPlatform ,
303277 val transformers : List <Transformer >
@@ -306,7 +280,7 @@ internal data class TransformerEntry(
306280@OptIn(InternalSuspendTransformConfigurationApi ::class )
307281internal fun SuspendTransformPluginExtension.toConfigurationProvider (objects : ObjectFactory ): Provider <SuspendTransformConfiguration > {
308282 val combines = objects.listProperty(TransformerEntry ::class .java)
309- for ((targetPlatform, transformerListProperty) in transformers._containers ) {
283+ for ((targetPlatform, transformerListProperty) in transformers.containers ) {
310284 combines.addAll(
311285 transformerListProperty.map { list ->
312286 if (list.isEmpty()) {
@@ -399,6 +373,7 @@ internal fun SuspendTransformPluginExtension.defaults(
399373/* *
400374 * @since 0.12.0
401375 */
376+ @Suppress(" unused" )
402377abstract class TransformerSpec
403378@Inject constructor (private val objects: ObjectFactory ) : SuspendTransformPluginExtensionSpec {
404379 /* *
@@ -438,6 +413,7 @@ abstract class TransformerSpec
438413 * @Api4J fun fooXxx(): CompletableFuture<Foo> = transform(block = { foo() }, scope = this)
439414 * }
440415 */
416+ @Suppress(" KDocUnresolvedReference" )
441417 abstract val transformFunctionInfo: Property <FunctionInfoSpec >
442418
443419 fun transformFunctionInfo (action : Action <in FunctionInfoSpec >) {
@@ -634,18 +610,21 @@ abstract class TransformerSpec
634610/* *
635611 * @since 0.12.0
636612 */
613+ @Suppress(" unused" )
637614abstract class MarkAnnotationSpec
638- @Inject constructor (private val objects: ObjectFactory ) : SuspendTransformPluginExtensionSpec {
615+ @Inject constructor (private val objects: ObjectFactory ) :
616+ SuspendTransformPluginExtensionSpec ,
617+ SuspendTransformPluginExtensionClassInfoSpec {
639618 /* *
640619 * The mark annotation's class info.
641620 */
642621 abstract val classInfo: Property <ClassInfoSpec >
643622
644- fun classInfo (action : Action <in ClassInfoSpec >) {
623+ override fun classInfo (action : Action <in ClassInfoSpec >) {
645624 classInfo.set(classInfo.getOrElse(objects.newInstance<ClassInfoSpec >()).also (action::execute))
646625 }
647626
648- fun classInfo (action : ClassInfoSpec .() -> Unit ) {
627+ override fun classInfo (action : ClassInfoSpec .() -> Unit ) {
649628 classInfo.set(classInfo.getOrElse(objects.newInstance<ClassInfoSpec >()).also (action))
650629 }
651630
@@ -743,15 +722,18 @@ interface FunctionInfoSpec : SuspendTransformPluginExtensionSpec {
743722/* *
744723 * @since 0.12.0
745724 */
725+ @Suppress(" unused" )
746726abstract class IncludeAnnotationSpec
747- @Inject constructor (private val objects: ObjectFactory ) : SuspendTransformPluginExtensionSpec {
727+ @Inject constructor (private val objects: ObjectFactory ) :
728+ SuspendTransformPluginExtensionSpec ,
729+ SuspendTransformPluginExtensionClassInfoSpec {
748730 abstract val classInfo: Property <ClassInfoSpec >
749731
750- fun classInfo (action : Action <in ClassInfoSpec >) {
732+ override fun classInfo (action : Action <in ClassInfoSpec >) {
751733 classInfo.set(classInfo.getOrElse(objects.newInstance<ClassInfoSpec >()).also (action::execute))
752734 }
753735
754- fun classInfo (action : ClassInfoSpec .() -> Unit ) {
736+ override fun classInfo (action : ClassInfoSpec .() -> Unit ) {
755737 classInfo.set(classInfo.getOrElse(objects.newInstance<ClassInfoSpec >()).also (action))
756738 }
757739
0 commit comments