Skip to content

Commit d9ce6a1

Browse files
authored
Move NoOpTransformer into the companion object of Transformer (#1290)
We can get rid of an explicit public object.
1 parent 1bedb4c commit d9ce6a1

File tree

7 files changed

+22
-25
lines changed

7 files changed

+22
-25
lines changed

api/shadow.api

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -394,14 +394,6 @@ public class com/github/jengelman/gradle/plugins/shadow/transformers/ManifestRes
394394
public fun transform (Lcom/github/jengelman/gradle/plugins/shadow/transformers/TransformerContext;)V
395395
}
396396

397-
public final class com/github/jengelman/gradle/plugins/shadow/transformers/NoOpTransformer : com/github/jengelman/gradle/plugins/shadow/transformers/Transformer {
398-
public static final field INSTANCE Lcom/github/jengelman/gradle/plugins/shadow/transformers/NoOpTransformer;
399-
public fun canTransformResource (Lorg/gradle/api/file/FileTreeElement;)Z
400-
public fun hasTransformedResource ()Z
401-
public fun modifyOutputStream (Lorg/apache/tools/zip/ZipOutputStream;Z)V
402-
public fun transform (Lcom/github/jengelman/gradle/plugins/shadow/transformers/TransformerContext;)V
403-
}
404-
405397
public class com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformer : com/github/jengelman/gradle/plugins/shadow/transformers/Transformer {
406398
public fun <init> (Lorg/gradle/api/model/ObjectFactory;)V
407399
public fun canTransformResource (Lorg/gradle/api/file/FileTreeElement;)Z
@@ -467,8 +459,12 @@ public abstract interface class com/github/jengelman/gradle/plugins/shadow/trans
467459
public abstract fun transform (Lcom/github/jengelman/gradle/plugins/shadow/transformers/TransformerContext;)V
468460
}
469461

470-
public final class com/github/jengelman/gradle/plugins/shadow/transformers/Transformer$Companion {
462+
public final class com/github/jengelman/gradle/plugins/shadow/transformers/Transformer$Companion : com/github/jengelman/gradle/plugins/shadow/transformers/Transformer {
463+
public fun canTransformResource (Lorg/gradle/api/file/FileTreeElement;)Z
471464
public final fun create (Ljava/lang/Class;Lorg/gradle/api/model/ObjectFactory;)Lcom/github/jengelman/gradle/plugins/shadow/transformers/Transformer;
465+
public fun hasTransformedResource ()Z
466+
public fun modifyOutputStream (Lorg/apache/tools/zip/ZipOutputStream;Z)V
467+
public fun transform (Lcom/github/jengelman/gradle/plugins/shadow/transformers/TransformerContext;)V
472468
}
473469

474470
public final class com/github/jengelman/gradle/plugins/shadow/transformers/Transformer$DefaultImpls {

src/functionalTest/kotlin/com/github/jengelman/gradle/plugins/shadow/caching/TransformerCachingTest.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ import com.github.jengelman.gradle.plugins.shadow.transformers.IncludeResourceTr
1212
import com.github.jengelman.gradle.plugins.shadow.transformers.Log4j2PluginsCacheFileTransformer
1313
import com.github.jengelman.gradle.plugins.shadow.transformers.ManifestAppenderTransformer
1414
import com.github.jengelman.gradle.plugins.shadow.transformers.ManifestResourceTransformer
15-
import com.github.jengelman.gradle.plugins.shadow.transformers.NoOpTransformer
1615
import com.github.jengelman.gradle.plugins.shadow.transformers.PropertiesFileTransformer
1716
import com.github.jengelman.gradle.plugins.shadow.transformers.ServiceFileTransformer
17+
import com.github.jengelman.gradle.plugins.shadow.transformers.Transformer
1818
import com.github.jengelman.gradle.plugins.shadow.transformers.XmlAppendingTransformer
1919
import com.github.jengelman.gradle.plugins.shadow.util.containsEntries
2020
import com.github.jengelman.gradle.plugins.shadow.util.getContent
@@ -146,8 +146,8 @@ class TransformerCachingTest : BaseCachingTest() {
146146
projectScriptPath.appendText(
147147
"""
148148
$shadowJar {
149-
// Use NoOpTransformer to mock a custom transformer here, it's not cacheable.
150-
transform(${NoOpTransformer::class.java.name}.INSTANCE)
149+
// Use Transformer.Companion (no-op) to mock a custom transformer here, it's not cacheable.
150+
transform(${Transformer.Companion::class.java.name})
151151
}
152152
""".trimIndent(),
153153
)

src/functionalTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/TransformersTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,8 @@ class TransformersTest : BaseTransformerTest() {
112112
implementation 'my:b:1.0'
113113
}
114114
$shadowJar {
115-
// Use NoOpTransformer to mock a custom transformer here.
116-
transform(${NoOpTransformer::class.java.name}.INSTANCE)
115+
// Use Transformer.Companion (no-op) to mock a custom transformer here.
116+
transform(${Transformer.Companion::class.java.name})
117117
}
118118
""".trimIndent(),
119119
)

src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheLicenseResourceTransformer.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import org.gradle.api.file.FileTreeElement
1010
* @author John Engelman
1111
*/
1212
@CacheableTransformer
13-
public open class ApacheLicenseResourceTransformer : Transformer by NoOpTransformer {
13+
public open class ApacheLicenseResourceTransformer : Transformer by Transformer.Companion {
1414
override fun canTransformResource(element: FileTreeElement): Boolean {
1515
val path = element.path
1616
return LICENSE_PATH.equals(path, ignoreCase = true) ||

src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/DontIncludeResourceTransformer.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import org.gradle.api.tasks.Optional
1818
@CacheableTransformer
1919
public open class DontIncludeResourceTransformer @Inject constructor(
2020
final override val objectFactory: ObjectFactory,
21-
) : Transformer by NoOpTransformer {
21+
) : Transformer by Transformer.Companion {
2222
@get:Optional
2323
@get:Input
2424
public open val resource: Property<String> = objectFactory.property()

src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/IncludeResourceTransformer.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import org.gradle.api.tasks.PathSensitivity
2222
@CacheableTransformer
2323
public open class IncludeResourceTransformer @Inject constructor(
2424
final override val objectFactory: ObjectFactory,
25-
) : Transformer by NoOpTransformer {
25+
) : Transformer by Transformer.Companion {
2626
@get:InputFile
2727
@get:PathSensitive(PathSensitivity.NONE)
2828
public open val file: RegularFileProperty = objectFactory.fileProperty()

src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/Transformer.kt

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,10 @@ public interface Transformer {
3535
public val objectFactory: ObjectFactory
3636
get() = throw NotImplementedError("You have to make sure this has been implemented or injected.")
3737

38-
public companion object {
38+
/**
39+
* This also implements [Transformer] but no-op, which means it could be used by Kotlin delegations.
40+
*/
41+
public companion object : Transformer {
3942
@JvmStatic
4043
public fun <T : Transformer> Class<T>.create(objectFactory: ObjectFactory): T {
4144
// If the constructor takes a single ObjectFactory, inject it in.
@@ -48,6 +51,11 @@ public interface Transformer {
4851
getDeclaredConstructor().newInstance()
4952
}
5053
}
54+
55+
public override fun canTransformResource(element: FileTreeElement): Boolean = false
56+
public override fun transform(context: TransformerContext): Unit = Unit
57+
public override fun modifyOutputStream(os: ZipOutputStream, preserveFileTimestamps: Boolean): Unit = Unit
58+
public override fun hasTransformedResource(): Boolean = false
5159
}
5260
}
5361

@@ -61,10 +69,3 @@ public interface Transformer {
6169
@Retention(AnnotationRetention.RUNTIME)
6270
@Target(AnnotationTarget.CLASS)
6371
public annotation class CacheableTransformer
64-
65-
public object NoOpTransformer : Transformer {
66-
public override fun canTransformResource(element: FileTreeElement): Boolean = false
67-
public override fun transform(context: TransformerContext): Unit = Unit
68-
public override fun modifyOutputStream(os: ZipOutputStream, preserveFileTimestamps: Boolean): Unit = Unit
69-
public override fun hasTransformedResource(): Boolean = false
70-
}

0 commit comments

Comments
 (0)