summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/analysis/EntryRenamer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cuchaz/enigma/analysis/EntryRenamer.java')
-rw-r--r--src/cuchaz/enigma/analysis/EntryRenamer.java29
1 files changed, 25 insertions, 4 deletions
diff --git a/src/cuchaz/enigma/analysis/EntryRenamer.java b/src/cuchaz/enigma/analysis/EntryRenamer.java
index b54489c..2f27049 100644
--- a/src/cuchaz/enigma/analysis/EntryRenamer.java
+++ b/src/cuchaz/enigma/analysis/EntryRenamer.java
@@ -21,10 +21,13 @@ import com.google.common.collect.Sets;
21 21
22import cuchaz.enigma.mapping.ArgumentEntry; 22import cuchaz.enigma.mapping.ArgumentEntry;
23import cuchaz.enigma.mapping.ClassEntry; 23import cuchaz.enigma.mapping.ClassEntry;
24import cuchaz.enigma.mapping.ClassNameReplacer;
24import cuchaz.enigma.mapping.ConstructorEntry; 25import cuchaz.enigma.mapping.ConstructorEntry;
25import cuchaz.enigma.mapping.Entry; 26import cuchaz.enigma.mapping.Entry;
26import cuchaz.enigma.mapping.FieldEntry; 27import cuchaz.enigma.mapping.FieldEntry;
27import cuchaz.enigma.mapping.MethodEntry; 28import cuchaz.enigma.mapping.MethodEntry;
29import cuchaz.enigma.mapping.Signature;
30import cuchaz.enigma.mapping.Type;
28 31
29public class EntryRenamer { 32public class EntryRenamer {
30 33
@@ -127,7 +130,7 @@ public class EntryRenamer {
127 } 130 }
128 131
129 @SuppressWarnings("unchecked") 132 @SuppressWarnings("unchecked")
130 public static <T> T renameClassesInThing(Map<String,String> renames, T thing) { 133 public static <T> T renameClassesInThing(final Map<String,String> renames, T thing) {
131 if (thing instanceof String) { 134 if (thing instanceof String) {
132 String stringEntry = (String)thing; 135 String stringEntry = (String)thing;
133 if (renames.containsKey(stringEntry)) { 136 if (renames.containsKey(stringEntry)) {
@@ -138,19 +141,23 @@ public class EntryRenamer {
138 return (T)new ClassEntry(renameClassesInThing(renames, classEntry.getClassName())); 141 return (T)new ClassEntry(renameClassesInThing(renames, classEntry.getClassName()));
139 } else if (thing instanceof FieldEntry) { 142 } else if (thing instanceof FieldEntry) {
140 FieldEntry fieldEntry = (FieldEntry)thing; 143 FieldEntry fieldEntry = (FieldEntry)thing;
141 return (T)new FieldEntry(renameClassesInThing(renames, fieldEntry.getClassEntry()), fieldEntry.getName()); 144 return (T)new FieldEntry(
145 renameClassesInThing(renames, fieldEntry.getClassEntry()),
146 fieldEntry.getName(),
147 renameClassesInThing(renames, fieldEntry.getType())
148 );
142 } else if (thing instanceof ConstructorEntry) { 149 } else if (thing instanceof ConstructorEntry) {
143 ConstructorEntry constructorEntry = (ConstructorEntry)thing; 150 ConstructorEntry constructorEntry = (ConstructorEntry)thing;
144 return (T)new ConstructorEntry( 151 return (T)new ConstructorEntry(
145 renameClassesInThing(renames, constructorEntry.getClassEntry()), 152 renameClassesInThing(renames, constructorEntry.getClassEntry()),
146 constructorEntry.getSignature() 153 renameClassesInThing(renames, constructorEntry.getSignature())
147 ); 154 );
148 } else if (thing instanceof MethodEntry) { 155 } else if (thing instanceof MethodEntry) {
149 MethodEntry methodEntry = (MethodEntry)thing; 156 MethodEntry methodEntry = (MethodEntry)thing;
150 return (T)new MethodEntry( 157 return (T)new MethodEntry(
151 renameClassesInThing(renames, methodEntry.getClassEntry()), 158 renameClassesInThing(renames, methodEntry.getClassEntry()),
152 methodEntry.getName(), 159 methodEntry.getName(),
153 methodEntry.getSignature() 160 renameClassesInThing(renames, methodEntry.getSignature())
154 ); 161 );
155 } else if (thing instanceof ArgumentEntry) { 162 } else if (thing instanceof ArgumentEntry) {
156 ArgumentEntry argumentEntry = (ArgumentEntry)thing; 163 ArgumentEntry argumentEntry = (ArgumentEntry)thing;
@@ -164,6 +171,20 @@ public class EntryRenamer {
164 reference.entry = renameClassesInThing(renames, reference.entry); 171 reference.entry = renameClassesInThing(renames, reference.entry);
165 reference.context = renameClassesInThing(renames, reference.context); 172 reference.context = renameClassesInThing(renames, reference.context);
166 return thing; 173 return thing;
174 } else if (thing instanceof Signature) {
175 return (T)new Signature((Signature)thing, new ClassNameReplacer() {
176 @Override
177 public String replace(String className) {
178 return renameClassesInThing(renames, className);
179 }
180 });
181 } else if (thing instanceof Type) {
182 return (T)new Type((Type)thing, new ClassNameReplacer() {
183 @Override
184 public String replace(String className) {
185 return renameClassesInThing(renames, className);
186 }
187 });
167 } 188 }
168 189
169 return thing; 190 return thing;