From 8fb6afb84ec8ca0a0b582508791ab96940dd8a7a Mon Sep 17 00:00:00 2001 From: JingMatrix Date: Thu, 31 Oct 2024 12:07:14 +0100 Subject: [PATCH] Rename Apache class names to avoid conflicts We add a gradle task to rename class names in the Apache library --- .gitignore | 1 + apache/build.gradle.kts | 22 +++++++++++++++++++ .../lang3/reflect => }/MemberUtilsX.java | 0 .../de/robv/android/xposed/XposedHelpers.java | 8 +++---- .../lsposed/lspd/service/ConfigManager.java | 6 ++--- 5 files changed, 30 insertions(+), 7 deletions(-) rename apache/local/{org/apache/commons/lang3/reflect => }/MemberUtilsX.java (100%) diff --git a/.gitignore b/.gitignore index b4a5eabf..9be6d25c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +apache/local/generated .project .settings .cache diff --git a/apache/build.gradle.kts b/apache/build.gradle.kts index af805591..30af6ab2 100644 --- a/apache/build.gradle.kts +++ b/apache/build.gradle.kts @@ -14,3 +14,25 @@ java { } } } + +val lang3Src = "commons-lang/src/main/java/org/apache/commons/lang3" +val localDir = "local/generated" + +task("ClassUtilsX") { + from("$lang3Src/ClassUtils.java") + into(localDir) + filter { line: String -> line.replace("ClassUtils", "ClassUtilsX") } + rename("(.+).java", "$1X.java") +} + +task("SerializationUtilsX") { + from("$lang3Src/SerializationUtils.java") + into(localDir) + filter { line: String -> line.replace("SerializationUtils", "SerializationUtilsX") } + rename("(.+).java", "$1X.java") +} + +tasks.compileJava { + dependsOn("ClassUtilsX") + dependsOn("SerializationUtilsX") +} diff --git a/apache/local/org/apache/commons/lang3/reflect/MemberUtilsX.java b/apache/local/MemberUtilsX.java similarity index 100% rename from apache/local/org/apache/commons/lang3/reflect/MemberUtilsX.java rename to apache/local/MemberUtilsX.java diff --git a/core/src/main/java/de/robv/android/xposed/XposedHelpers.java b/core/src/main/java/de/robv/android/xposed/XposedHelpers.java index a0495fbf..592be83d 100644 --- a/core/src/main/java/de/robv/android/xposed/XposedHelpers.java +++ b/core/src/main/java/de/robv/android/xposed/XposedHelpers.java @@ -26,7 +26,7 @@ import android.content.res.Resources; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import org.apache.commons.lang3.ClassUtils; +import org.apache.commons.lang3.ClassUtilsX; import org.apache.commons.lang3.reflect.MemberUtilsX; import java.io.ByteArrayOutputStream; @@ -202,7 +202,7 @@ public final class XposedHelpers { if (classLoader == null) classLoader = XposedBridge.BOOTCLASSLOADER; try { - return ClassUtils.getClass(classLoader, className, false); + return ClassUtilsX.getClass(classLoader, className, false); } catch (ClassNotFoundException e) { throw new ClassNotFoundError(e); } @@ -540,7 +540,7 @@ public final class XposedHelpers { continue; // compare name and parameters - if (method.getName().equals(k.name) && ClassUtils.isAssignable( + if (method.getName().equals(k.name) && ClassUtilsX.isAssignable( k.parameters, method.getParameterTypes(), true)) { @@ -763,7 +763,7 @@ public final class XposedHelpers { Constructor[] constructors = k.clazz.getDeclaredConstructors(); for (Constructor constructor : constructors) { // compare name and parameters - if (ClassUtils.isAssignable( + if (ClassUtilsX.isAssignable( k.parameters, constructor.getParameterTypes(), true)) { diff --git a/daemon/src/main/java/org/lsposed/lspd/service/ConfigManager.java b/daemon/src/main/java/org/lsposed/lspd/service/ConfigManager.java index 77b8ee94..c4308768 100644 --- a/daemon/src/main/java/org/lsposed/lspd/service/ConfigManager.java +++ b/daemon/src/main/java/org/lsposed/lspd/service/ConfigManager.java @@ -51,7 +51,7 @@ import android.util.Pair; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import org.apache.commons.lang3.SerializationUtils; +import org.apache.commons.lang3.SerializationUtilsX; import org.lsposed.daemon.BuildConfig; import org.lsposed.lspd.models.Application; import org.lsposed.lspd.models.Module; @@ -464,7 +464,7 @@ public class ConfigManager { var group = cursor.getString(groupIdx); var key = cursor.getString(keyIdx); var data = cursor.getBlob(dataIdx); - var object = SerializationUtils.deserialize(data); + var object = SerializationUtilsX.deserialize(data); if (object == null) continue; config.computeIfAbsent(group, g -> new HashMap<>()).put(key, object); } @@ -491,7 +491,7 @@ public class ConfigManager { var contents = new ContentValues(); contents.put("`group`", group); contents.put("`key`", key); - contents.put("data", SerializationUtils.serialize((Serializable) value)); + contents.put("data", SerializationUtilsX.serialize((Serializable) value)); contents.put("module_pkg_name", moduleName); contents.put("user_id", String.valueOf(userId)); db.insertWithOnConflict("configs", null, contents, SQLiteDatabase.CONFLICT_REPLACE);