diff options
| author | 2014-09-01 22:52:07 -0400 | |
|---|---|---|
| committer | 2014-09-01 22:52:07 -0400 | |
| commit | 360bbd1c2fca8cbd575907b7d930a8072fccb0c2 (patch) | |
| tree | 93d0f3c4a0901411427df580c5ddb75cf27440f1 /src/cuchaz/enigma/mapping/Renamer.java | |
| parent | added copyright notice (diff) | |
| download | enigma-fork-360bbd1c2fca8cbd575907b7d930a8072fccb0c2.tar.gz enigma-fork-360bbd1c2fca8cbd575907b7d930a8072fccb0c2.tar.xz enigma-fork-360bbd1c2fca8cbd575907b7d930a8072fccb0c2.zip | |
refactored jar,translation index. fixed bug with field renaming when fields are shadowed by subclasses
Diffstat (limited to '')
| -rw-r--r-- | src/cuchaz/enigma/mapping/MappingsRenamer.java (renamed from src/cuchaz/enigma/mapping/Renamer.java) | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/src/cuchaz/enigma/mapping/Renamer.java b/src/cuchaz/enigma/mapping/MappingsRenamer.java index 15d9af4..9d036d8 100644 --- a/src/cuchaz/enigma/mapping/Renamer.java +++ b/src/cuchaz/enigma/mapping/MappingsRenamer.java | |||
| @@ -18,12 +18,12 @@ import java.util.zip.GZIPOutputStream; | |||
| 18 | 18 | ||
| 19 | import cuchaz.enigma.analysis.JarIndex; | 19 | import cuchaz.enigma.analysis.JarIndex; |
| 20 | 20 | ||
| 21 | public class Renamer | 21 | public class MappingsRenamer |
| 22 | { | 22 | { |
| 23 | private JarIndex m_index; | 23 | private JarIndex m_index; |
| 24 | private Mappings m_mappings; | 24 | private Mappings m_mappings; |
| 25 | 25 | ||
| 26 | public Renamer( JarIndex index, Mappings mappings ) | 26 | public MappingsRenamer( JarIndex index, Mappings mappings ) |
| 27 | { | 27 | { |
| 28 | m_index = index; | 28 | m_index = index; |
| 29 | m_mappings = mappings; | 29 | m_mappings = mappings; |
| @@ -77,8 +77,8 @@ public class Renamer | |||
| 77 | MethodEntry targetEntry = new MethodEntry( entry.getClassEntry(), deobfName, entry.getSignature() ); | 77 | MethodEntry targetEntry = new MethodEntry( entry.getClassEntry(), deobfName, entry.getSignature() ); |
| 78 | if( m_mappings.containsDeobfMethod( entry.getClassEntry(), deobfName, entry.getSignature() ) || m_index.containsObfMethod( targetEntry ) ) | 78 | if( m_mappings.containsDeobfMethod( entry.getClassEntry(), deobfName, entry.getSignature() ) || m_index.containsObfMethod( targetEntry ) ) |
| 79 | { | 79 | { |
| 80 | String className = m_mappings.getTranslator( m_index.getAncestries(), TranslationDirection.Deobfuscating ).translateClass( entry.getClassName() ); | 80 | String deobfClassName = getTranslator( TranslationDirection.Deobfuscating ).translateClass( entry.getClassName() ); |
| 81 | throw new IllegalNameException( deobfName, "There is already a method with that name and signature in class " + className ); | 81 | throw new IllegalNameException( deobfName, "There is already a method with that name and signature in class " + deobfClassName ); |
| 82 | } | 82 | } |
| 83 | } | 83 | } |
| 84 | 84 | ||
| @@ -94,12 +94,12 @@ public class Renamer | |||
| 94 | MethodEntry targetEntry = new MethodEntry( obf.getClassEntry(), deobfName, obf.getSignature() ); | 94 | MethodEntry targetEntry = new MethodEntry( obf.getClassEntry(), deobfName, obf.getSignature() ); |
| 95 | if( m_mappings.containsDeobfMethod( obf.getClassEntry(), deobfName, obf.getSignature() ) || m_index.containsObfMethod( targetEntry ) ) | 95 | if( m_mappings.containsDeobfMethod( obf.getClassEntry(), deobfName, obf.getSignature() ) || m_index.containsObfMethod( targetEntry ) ) |
| 96 | { | 96 | { |
| 97 | String className = m_mappings.getTranslator( m_index.getAncestries(), TranslationDirection.Deobfuscating ).translateClass( obf.getClassName() ); | 97 | String deobfClassName = getTranslator( TranslationDirection.Deobfuscating ).translateClass( obf.getClassName() ); |
| 98 | throw new IllegalNameException( deobfName, "There is already a method with that name and signature in class " + className ); | 98 | throw new IllegalNameException( deobfName, "There is already a method with that name and signature in class " + deobfClassName ); |
| 99 | } | 99 | } |
| 100 | 100 | ||
| 101 | ClassMapping classMapping = getOrCreateClassMappingOrInnerClassMapping( obf.getClassEntry() ); | 101 | ClassMapping classMapping = getOrCreateClassMappingOrInnerClassMapping( obf.getClassEntry() ); |
| 102 | String deobfSignature = m_mappings.getTranslator( m_index.getAncestries(), TranslationDirection.Deobfuscating ).translateSignature( obf.getSignature() ); | 102 | String deobfSignature = getTranslator( TranslationDirection.Deobfuscating ).translateSignature( obf.getSignature() ); |
| 103 | classMapping.setMethodNameAndSignature( obf.getName(), obf.getSignature(), deobfName, deobfSignature ); | 103 | classMapping.setMethodNameAndSignature( obf.getName(), obf.getSignature(), deobfName, deobfSignature ); |
| 104 | } | 104 | } |
| 105 | 105 | ||
| @@ -151,10 +151,14 @@ public class Renamer | |||
| 151 | 151 | ||
| 152 | private void updateDeobfMethodSignatures( ) | 152 | private void updateDeobfMethodSignatures( ) |
| 153 | { | 153 | { |
| 154 | Translator translator = m_mappings.getTranslator( m_index.getAncestries(), TranslationDirection.Deobfuscating ); | ||
| 155 | for( ClassMapping classMapping : m_mappings.m_classesByObf.values() ) | 154 | for( ClassMapping classMapping : m_mappings.m_classesByObf.values() ) |
| 156 | { | 155 | { |
| 157 | classMapping.updateDeobfMethodSignatures( translator ); | 156 | classMapping.updateDeobfMethodSignatures( getTranslator( TranslationDirection.Deobfuscating ) ); |
| 158 | } | 157 | } |
| 159 | } | 158 | } |
| 159 | |||
| 160 | private Translator getTranslator( TranslationDirection direction ) | ||
| 161 | { | ||
| 162 | return m_mappings.getTranslator( m_index.getTranslationIndex(), direction ); | ||
| 163 | } | ||
| 160 | } | 164 | } |