Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 16 additions & 7 deletions api/shadow.api
Original file line number Diff line number Diff line change
Expand Up @@ -127,27 +127,36 @@ public abstract interface class com/github/jengelman/gradle/plugins/shadow/reloc
public abstract fun relocatePath (Lcom/github/jengelman/gradle/plugins/shadow/relocation/RelocatePathContext;)Ljava/lang/String;
}

public class com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocator : com/github/jengelman/gradle/plugins/shadow/relocation/Relocator {
public class com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocator : com/github/jengelman/gradle/plugins/shadow/relocation/Relocator, org/gradle/api/tasks/util/PatternFilterable {
public fun <init> ()V
public fun <init> (Ljava/lang/String;)V
public fun <init> (Ljava/lang/String;Ljava/lang/String;)V
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)V
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;)V
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;Z)V
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;ZZ)V
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;ZZILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;ZLorg/gradle/api/tasks/util/PatternSet;)V
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;ZLorg/gradle/api/tasks/util/PatternSet;Z)V
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;ZLorg/gradle/api/tasks/util/PatternSet;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun applyToSourceContent (Ljava/lang/String;)Ljava/lang/String;
public fun canRelocateClass (Ljava/lang/String;)Z
public fun canRelocatePath (Ljava/lang/String;)Z
public fun equals (Ljava/lang/Object;)Z
public fun exclude (Ljava/lang/String;)V
public final fun getExcludes ()Ljava/util/Set;
public final fun getIncludes ()Ljava/util/Set;
public fun exclude (Lgroovy/lang/Closure;)Lorg/gradle/api/tasks/util/PatternFilterable;
public fun exclude (Ljava/lang/Iterable;)Lorg/gradle/api/tasks/util/PatternFilterable;
public fun exclude (Lorg/gradle/api/specs/Spec;)Lorg/gradle/api/tasks/util/PatternFilterable;
public fun exclude ([Ljava/lang/String;)Lorg/gradle/api/tasks/util/PatternFilterable;
public fun getExcludes ()Ljava/util/Set;
public fun getIncludes ()Ljava/util/Set;
public fun getSkipStringConstants ()Z
public fun hashCode ()I
public fun include (Ljava/lang/String;)V
public fun include (Lgroovy/lang/Closure;)Lorg/gradle/api/tasks/util/PatternFilterable;
public fun include (Ljava/lang/Iterable;)Lorg/gradle/api/tasks/util/PatternFilterable;
public fun include (Lorg/gradle/api/specs/Spec;)Lorg/gradle/api/tasks/util/PatternFilterable;
public fun include ([Ljava/lang/String;)Lorg/gradle/api/tasks/util/PatternFilterable;
Comment on lines -148 to +155
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ABI change.

Should we need to normalize all newly added patterns?

public interface PatternFilterable {
  PatternFilterable setIncludes(Iterable<String> includes);
  PatternFilterable include(String... includes);
  PatternFilterable include(Iterable<String> includes);
  PatternFilterable include(Spec<FileTreeElement> includeSpec);
  PatternFilterable include(Closure includeSpec);
}

public fun relocateClass (Lcom/github/jengelman/gradle/plugins/shadow/relocation/RelocateClassContext;)Ljava/lang/String;
public fun relocatePath (Lcom/github/jengelman/gradle/plugins/shadow/relocation/RelocatePathContext;)Ljava/lang/String;
public fun setExcludes (Ljava/lang/Iterable;)Lorg/gradle/api/tasks/util/PatternFilterable;
public fun setIncludes (Ljava/lang/Iterable;)Lorg/gradle/api/tasks/util/PatternFilterable;
public fun setSkipStringConstants (Z)V
public fun toString ()Ljava/lang/String;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import java.util.regex.Pattern
import org.apache.commons.io.FilenameUtils
import org.codehaus.plexus.util.SelectorUtils
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.util.PatternFilterable
import org.gradle.api.tasks.util.PatternSet

/**
* Modified from [org.apache.maven.plugins.shade.relocation.SimpleRelocator.java](https://github.com/apache/maven-shade-plugin/blob/master/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java).
Expand All @@ -20,20 +22,22 @@ public open class SimpleRelocator @JvmOverloads constructor(
includes: List<String>? = null,
excludes: List<String>? = null,
private val rawString: Boolean = false,
private val patternSet: PatternSet = PatternSet(),
@get:Input override var skipStringConstants: Boolean = false,
) : Relocator {
) : Relocator,
PatternFilterable by patternSet {
private val pattern: String
private val pathPattern: String
private val shadedPattern: String
private val shadedPathPattern: String
private val sourcePackageExcludes = mutableSetOf<String>()
private val sourcePathExcludes = mutableSetOf<String>()

@get:Input
public val includes: MutableSet<String> = mutableSetOf()
@Input // Trigger task executions after includes changed.
override fun getIncludes(): MutableSet<String> = patternSet.includes

@get:Input
public val excludes: MutableSet<String> = mutableSetOf()
@Input // Trigger task executions after excludes changed.
override fun getExcludes(): MutableSet<String> = patternSet.excludes

init {
if (rawString) {
Expand Down Expand Up @@ -87,12 +91,16 @@ public open class SimpleRelocator @JvmOverloads constructor(
}
}

public open fun include(pattern: String) {
includes.addAll(normalizePatterns(listOf(pattern)))
override fun include(vararg includes: String): PatternFilterable = apply {
includes.forEach { include ->
getIncludes().addAll(normalizePatterns(listOf(include)))
}
}

public open fun exclude(pattern: String) {
excludes.addAll(normalizePatterns(listOf(pattern)))
override fun exclude(vararg excludes: String): PatternFilterable = apply {
excludes.forEach { exclude ->
getExcludes().addAll(normalizePatterns(listOf(exclude)))
}
}

override fun canRelocatePath(path: String): Boolean {
Expand Down