From f0885819aeeb2edbfcfc0b23566cccb571166a02 Mon Sep 17 00:00:00 2001 From: Runemoro Date: Mon, 6 Jul 2020 06:34:10 -0400 Subject: Make class loading more flexible (#277) --- .../java/cuchaz/enigma/command/CheckMappingsCommand.java | 3 ++- .../src/main/java/cuchaz/enigma/command/Command.java | 3 ++- .../enigma/command/MapSpecializedMethodsCommand.java | 16 ++++++++++------ 3 files changed, 14 insertions(+), 8 deletions(-) (limited to 'enigma-cli/src/main/java/cuchaz/enigma/command') diff --git a/enigma-cli/src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java b/enigma-cli/src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java index e4deef8..75ef225 100644 --- a/enigma-cli/src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java +++ b/enigma-cli/src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java @@ -4,6 +4,7 @@ import cuchaz.enigma.Enigma; import cuchaz.enigma.EnigmaProject; import cuchaz.enigma.ProgressListener; import cuchaz.enigma.analysis.index.JarIndex; +import cuchaz.enigma.classprovider.ClasspathClassProvider; import cuchaz.enigma.translation.mapping.EntryMapping; import cuchaz.enigma.translation.mapping.serde.MappingSaveParameters; import cuchaz.enigma.translation.mapping.serde.MappingFormat; @@ -39,7 +40,7 @@ public class CheckMappingsCommand extends Command { System.out.println("Reading JAR..."); - EnigmaProject project = enigma.openJar(fileJarIn, ProgressListener.none()); + EnigmaProject project = enigma.openJar(fileJarIn, new ClasspathClassProvider(), ProgressListener.none()); System.out.println("Reading mappings..."); diff --git a/enigma-cli/src/main/java/cuchaz/enigma/command/Command.java b/enigma-cli/src/main/java/cuchaz/enigma/command/Command.java index 0640e3e..0d71f02 100644 --- a/enigma-cli/src/main/java/cuchaz/enigma/command/Command.java +++ b/enigma-cli/src/main/java/cuchaz/enigma/command/Command.java @@ -3,6 +3,7 @@ package cuchaz.enigma.command; import cuchaz.enigma.Enigma; import cuchaz.enigma.EnigmaProject; import cuchaz.enigma.ProgressListener; +import cuchaz.enigma.classprovider.ClasspathClassProvider; import cuchaz.enigma.translation.mapping.EntryMapping; import cuchaz.enigma.translation.mapping.serde.MappingSaveParameters; import cuchaz.enigma.translation.mapping.serde.MappingFormat; @@ -34,7 +35,7 @@ public abstract class Command { Enigma enigma = Enigma.create(); System.out.println("Reading jar..."); - EnigmaProject project = enigma.openJar(fileJarIn, progress); + EnigmaProject project = enigma.openJar(fileJarIn, new ClasspathClassProvider(), progress); if (fileMappings != null) { System.out.println("Reading mappings..."); diff --git a/enigma-cli/src/main/java/cuchaz/enigma/command/MapSpecializedMethodsCommand.java b/enigma-cli/src/main/java/cuchaz/enigma/command/MapSpecializedMethodsCommand.java index 292de19..94f7010 100644 --- a/enigma-cli/src/main/java/cuchaz/enigma/command/MapSpecializedMethodsCommand.java +++ b/enigma-cli/src/main/java/cuchaz/enigma/command/MapSpecializedMethodsCommand.java @@ -1,14 +1,15 @@ package cuchaz.enigma.command; import cuchaz.enigma.ProgressListener; -import cuchaz.enigma.analysis.ClassCache; import cuchaz.enigma.analysis.index.BridgeMethodIndex; import cuchaz.enigma.analysis.index.JarIndex; -import cuchaz.enigma.translation.mapping.serde.MappingFileNameFormat; -import cuchaz.enigma.translation.mapping.serde.MappingParseException; +import cuchaz.enigma.classprovider.CachingClassProvider; +import cuchaz.enigma.classprovider.JarClassProvider; import cuchaz.enigma.translation.MappingTranslator; import cuchaz.enigma.translation.Translator; -import cuchaz.enigma.translation.mapping.*; +import cuchaz.enigma.translation.mapping.EntryMapping; +import cuchaz.enigma.translation.mapping.serde.MappingFileNameFormat; +import cuchaz.enigma.translation.mapping.serde.MappingParseException; import cuchaz.enigma.translation.mapping.serde.MappingSaveParameters; import cuchaz.enigma.translation.mapping.tree.EntryTree; import cuchaz.enigma.translation.mapping.tree.EntryTreeNode; @@ -45,8 +46,11 @@ public class MapSpecializedMethodsCommand extends Command { MappingSaveParameters saveParameters = new MappingSaveParameters(MappingFileNameFormat.BY_DEOBF); EntryTree source = MappingCommandsUtil.read(sourceFormat, sourcePath, saveParameters); EntryTree result = new HashEntryTree<>(); - ClassCache classCache = ClassCache.of(jar); - JarIndex jarIndex = classCache.index(ProgressListener.none()); + + JarClassProvider jcp = new JarClassProvider(jar); + JarIndex jarIndex = JarIndex.empty(); + jarIndex.indexJar(jcp.getClassNames(), new CachingClassProvider(jcp), ProgressListener.none()); + BridgeMethodIndex bridgeMethodIndex = jarIndex.getBridgeMethodIndex(); Translator translator = new MappingTranslator(source, jarIndex.getEntryResolver()); -- cgit v1.2.3