From 37e8806d0b00128a25b4aa6a8058f68d63e34a91 Mon Sep 17 00:00:00 2001 From: asiekierka Date: Wed, 17 Aug 2016 15:49:26 +0200 Subject: fix #2 --- src/main/java/cuchaz/enigma/analysis/JarIndex.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/cuchaz/enigma/analysis/JarIndex.java b/src/main/java/cuchaz/enigma/analysis/JarIndex.java index 9acf0b14..96f92c3d 100644 --- a/src/main/java/cuchaz/enigma/analysis/JarIndex.java +++ b/src/main/java/cuchaz/enigma/analysis/JarIndex.java @@ -704,14 +704,20 @@ public class JarIndex { } public Set getImplementingClasses(String targetInterfaceName) { - + // linear search is fast enough for now Set classNames = Sets.newHashSet(); + Set interfaceNames = Sets.newHashSet(targetInterfaceName); for (Map.Entry entry : this.translationIndex.getClassInterfaces()) { ClassEntry classEntry = entry.getKey(); ClassEntry interfaceEntry = entry.getValue(); - if (interfaceEntry.getName().equals(targetInterfaceName)) { - classNames.add(classEntry.getClassName()); + if (interfaceNames.contains(interfaceEntry.getName())) { + String className = classEntry.getClassName(); + classNames.add(className); + if (isInterface(className)) { + interfaceNames.add(className); + } + this.translationIndex.getSubclassNamesRecursively(classNames, classEntry); } } -- cgit v1.2.3