diff --git a/src/main/kotlin/app/revanced/patcher/Patcher.kt b/src/main/kotlin/app/revanced/patcher/Patcher.kt index c187fbe..b3bc77f 100644 --- a/src/main/kotlin/app/revanced/patcher/Patcher.kt +++ b/src/main/kotlin/app/revanced/patcher/Patcher.kt @@ -11,8 +11,8 @@ import app.revanced.patcher.patch.Patch import app.revanced.patcher.patch.PatchResult import app.revanced.patcher.patch.PatchResultError import app.revanced.patcher.patch.PatchResultSuccess -import app.revanced.patcher.patch.impl.BytecodePatch -import app.revanced.patcher.patch.impl.ResourcePatch +import app.revanced.patcher.patch.BytecodePatch +import app.revanced.patcher.patch.ResourcePatch import app.revanced.patcher.util.ListBackedSet import app.revanced.patcher.util.VersionReader import brut.androlib.Androlib diff --git a/src/main/kotlin/app/revanced/patcher/patch/Patch.kt b/src/main/kotlin/app/revanced/patcher/patch/Patch.kt index c09524f..b6d7456 100644 --- a/src/main/kotlin/app/revanced/patcher/patch/Patch.kt +++ b/src/main/kotlin/app/revanced/patcher/patch/Patch.kt @@ -1,8 +1,9 @@ package app.revanced.patcher.patch import app.revanced.patcher.data.Data -import app.revanced.patcher.patch.impl.BytecodePatch -import app.revanced.patcher.patch.impl.ResourcePatch +import app.revanced.patcher.data.impl.BytecodeData +import app.revanced.patcher.data.impl.ResourceData +import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint import java.io.Closeable /** @@ -12,11 +13,11 @@ import java.io.Closeable * If it implements [Closeable], it will be closed after all patches have been executed. * Closing will be done in reverse execution order. */ -abstract class Patch { +sealed interface Patch { /** * The main function of the [Patch] which the patcher will call. */ - abstract fun execute(data: @UnsafeVariance T): PatchResult + fun execute(data: @UnsafeVariance T): PatchResult } abstract class OptionsContainer { @@ -31,4 +32,17 @@ abstract class OptionsContainer { options.register(opt) return opt } -} \ No newline at end of file +} + +/** + * Resource patch for the Patcher. + */ +interface ResourcePatch : Patch + +/** + * Bytecode patch for the Patcher. + * @param fingerprints A list of [MethodFingerprint] this patch relies on. + */ +abstract class BytecodePatch( + internal val fingerprints: Iterable? = null +) : Patch \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patcher/patch/impl/BytecodePatch.kt b/src/main/kotlin/app/revanced/patcher/patch/impl/BytecodePatch.kt deleted file mode 100644 index 5c0549d..0000000 --- a/src/main/kotlin/app/revanced/patcher/patch/impl/BytecodePatch.kt +++ /dev/null @@ -1,13 +0,0 @@ -package app.revanced.patcher.patch.impl - -import app.revanced.patcher.data.impl.BytecodeData -import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint -import app.revanced.patcher.patch.Patch - -/** - * Bytecode patch for the Patcher. - * @param fingerprints A list of [MethodFingerprint] this patch relies on. - */ -abstract class BytecodePatch( - internal val fingerprints: Iterable? = null -) : Patch() diff --git a/src/main/kotlin/app/revanced/patcher/patch/impl/ResourcePatch.kt b/src/main/kotlin/app/revanced/patcher/patch/impl/ResourcePatch.kt deleted file mode 100644 index 89df023..0000000 --- a/src/main/kotlin/app/revanced/patcher/patch/impl/ResourcePatch.kt +++ /dev/null @@ -1,9 +0,0 @@ -package app.revanced.patcher.patch.impl - -import app.revanced.patcher.data.impl.ResourceData -import app.revanced.patcher.patch.Patch - -/** - * Resource patch for the Patcher. - */ -abstract class ResourcePatch : Patch() \ No newline at end of file diff --git a/src/test/kotlin/app/revanced/patcher/usage/bytecode/ExampleBytecodePatch.kt b/src/test/kotlin/app/revanced/patcher/usage/bytecode/ExampleBytecodePatch.kt index 2066cac..c0ac5a6 100644 --- a/src/test/kotlin/app/revanced/patcher/usage/bytecode/ExampleBytecodePatch.kt +++ b/src/test/kotlin/app/revanced/patcher/usage/bytecode/ExampleBytecodePatch.kt @@ -13,7 +13,7 @@ import app.revanced.patcher.patch.PatchResult import app.revanced.patcher.patch.PatchResultSuccess import app.revanced.patcher.patch.annotations.DependsOn import app.revanced.patcher.patch.annotations.Patch -import app.revanced.patcher.patch.impl.BytecodePatch +import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.usage.resource.annotation.ExampleResourceCompatibility import app.revanced.patcher.util.proxy.mutableTypes.MutableField.Companion.toMutable import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable diff --git a/src/test/kotlin/app/revanced/patcher/usage/resource/patch/ExampleResourcePatch.kt b/src/test/kotlin/app/revanced/patcher/usage/resource/patch/ExampleResourcePatch.kt index ca2c195..4f9fcf2 100644 --- a/src/test/kotlin/app/revanced/patcher/usage/resource/patch/ExampleResourcePatch.kt +++ b/src/test/kotlin/app/revanced/patcher/usage/resource/patch/ExampleResourcePatch.kt @@ -7,7 +7,7 @@ import app.revanced.patcher.data.impl.ResourceData import app.revanced.patcher.patch.PatchResult import app.revanced.patcher.patch.PatchResultSuccess import app.revanced.patcher.patch.annotations.Patch -import app.revanced.patcher.patch.impl.ResourcePatch +import app.revanced.patcher.patch.ResourcePatch import app.revanced.patcher.usage.resource.annotation.ExampleResourceCompatibility import org.w3c.dom.Element @@ -16,7 +16,7 @@ import org.w3c.dom.Element @Description("Example demonstration of a resource patch.") @ExampleResourceCompatibility @Version("0.0.1") -class ExampleResourcePatch : ResourcePatch() { +class ExampleResourcePatch : ResourcePatch { override fun execute(data: ResourceData): PatchResult { data.xmlEditor["AndroidManifest.xml"].use { editor -> val element = editor // regular DomFileEditor