diff options
| author | 2014-09-30 00:25:36 -0400 | |
|---|---|---|
| committer | 2014-09-30 00:25:36 -0400 | |
| commit | a83bbfd5c510367a194073b1db132022cacf65ed (patch) | |
| tree | abfd7520b79ef1e64b7430bd81e75a30353b7f14 /src/cuchaz/enigma/mapping/ClassMapping.java | |
| parent | fixed recognition of static initializer tokens (diff) | |
| download | enigma-fork-a83bbfd5c510367a194073b1db132022cacf65ed.tar.gz enigma-fork-a83bbfd5c510367a194073b1db132022cacf65ed.tar.xz enigma-fork-a83bbfd5c510367a194073b1db132022cacf65ed.zip | |
fixed nasty issue with renaming inner classes, but alas, more bugs remain
Diffstat (limited to '')
| -rw-r--r-- | src/cuchaz/enigma/mapping/ClassMapping.java | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/cuchaz/enigma/mapping/ClassMapping.java b/src/cuchaz/enigma/mapping/ClassMapping.java index 88106df..ee02781 100644 --- a/src/cuchaz/enigma/mapping/ClassMapping.java +++ b/src/cuchaz/enigma/mapping/ClassMapping.java | |||
| @@ -37,7 +37,7 @@ public class ClassMapping implements Serializable, Comparable<ClassMapping> | |||
| 37 | public ClassMapping( String obfName, String deobfName ) | 37 | public ClassMapping( String obfName, String deobfName ) |
| 38 | { | 38 | { |
| 39 | m_obfName = obfName; | 39 | m_obfName = obfName; |
| 40 | m_deobfName = NameValidator.validateClassName( deobfName ); | 40 | m_deobfName = NameValidator.validateClassName( deobfName, false ); |
| 41 | m_innerClassesByObf = Maps.newHashMap(); | 41 | m_innerClassesByObf = Maps.newHashMap(); |
| 42 | m_innerClassesByDeobf = Maps.newHashMap(); | 42 | m_innerClassesByDeobf = Maps.newHashMap(); |
| 43 | m_fieldsByObf = Maps.newHashMap(); | 43 | m_fieldsByObf = Maps.newHashMap(); |
| @@ -57,7 +57,7 @@ public class ClassMapping implements Serializable, Comparable<ClassMapping> | |||
| 57 | } | 57 | } |
| 58 | public void setDeobfName( String val ) | 58 | public void setDeobfName( String val ) |
| 59 | { | 59 | { |
| 60 | m_deobfName = NameValidator.validateClassName( val ); | 60 | m_deobfName = NameValidator.validateClassName( val, false ); |
| 61 | } | 61 | } |
| 62 | 62 | ||
| 63 | //// INNER CLASSES //////// | 63 | //// INNER CLASSES //////// |
| @@ -70,10 +70,12 @@ public class ClassMapping implements Serializable, Comparable<ClassMapping> | |||
| 70 | 70 | ||
| 71 | public void addInnerClassMapping( ClassMapping classMapping ) | 71 | public void addInnerClassMapping( ClassMapping classMapping ) |
| 72 | { | 72 | { |
| 73 | assert( isSimpleClassName( classMapping.getObfName() ) ); | ||
| 73 | boolean obfWasAdded = m_innerClassesByObf.put( classMapping.getObfName(), classMapping ) == null; | 74 | boolean obfWasAdded = m_innerClassesByObf.put( classMapping.getObfName(), classMapping ) == null; |
| 74 | assert( obfWasAdded ); | 75 | assert( obfWasAdded ); |
| 75 | if( classMapping.getDeobfName() != null ) | 76 | if( classMapping.getDeobfName() != null ) |
| 76 | { | 77 | { |
| 78 | assert( isSimpleClassName( classMapping.getDeobfName() ) ); | ||
| 77 | boolean deobfWasAdded = m_innerClassesByDeobf.put( classMapping.getDeobfName(), classMapping ) == null; | 79 | boolean deobfWasAdded = m_innerClassesByDeobf.put( classMapping.getDeobfName(), classMapping ) == null; |
| 78 | assert( deobfWasAdded ); | 80 | assert( deobfWasAdded ); |
| 79 | } | 81 | } |
| @@ -92,6 +94,7 @@ public class ClassMapping implements Serializable, Comparable<ClassMapping> | |||
| 92 | 94 | ||
| 93 | public ClassMapping getOrCreateInnerClass( String obfName ) | 95 | public ClassMapping getOrCreateInnerClass( String obfName ) |
| 94 | { | 96 | { |
| 97 | assert( isSimpleClassName( obfName ) ); | ||
| 95 | ClassMapping classMapping = m_innerClassesByObf.get( obfName ); | 98 | ClassMapping classMapping = m_innerClassesByObf.get( obfName ); |
| 96 | if( classMapping == null ) | 99 | if( classMapping == null ) |
| 97 | { | 100 | { |
| @@ -104,16 +107,19 @@ public class ClassMapping implements Serializable, Comparable<ClassMapping> | |||
| 104 | 107 | ||
| 105 | public ClassMapping getInnerClassByObf( String obfName ) | 108 | public ClassMapping getInnerClassByObf( String obfName ) |
| 106 | { | 109 | { |
| 110 | assert( isSimpleClassName( obfName ) ); | ||
| 107 | return m_innerClassesByObf.get( obfName ); | 111 | return m_innerClassesByObf.get( obfName ); |
| 108 | } | 112 | } |
| 109 | 113 | ||
| 110 | public ClassMapping getInnerClassByDeobf( String deobfName ) | 114 | public ClassMapping getInnerClassByDeobf( String deobfName ) |
| 111 | { | 115 | { |
| 116 | assert( isSimpleClassName( deobfName ) ); | ||
| 112 | return m_innerClassesByDeobf.get( deobfName ); | 117 | return m_innerClassesByDeobf.get( deobfName ); |
| 113 | } | 118 | } |
| 114 | 119 | ||
| 115 | public String getObfInnerClassName( String deobfName ) | 120 | public String getObfInnerClassName( String deobfName ) |
| 116 | { | 121 | { |
| 122 | assert( isSimpleClassName( deobfName ) ); | ||
| 117 | ClassMapping classMapping = m_innerClassesByDeobf.get( deobfName ); | 123 | ClassMapping classMapping = m_innerClassesByDeobf.get( deobfName ); |
| 118 | if( classMapping != null ) | 124 | if( classMapping != null ) |
| 119 | { | 125 | { |
| @@ -124,6 +130,7 @@ public class ClassMapping implements Serializable, Comparable<ClassMapping> | |||
| 124 | 130 | ||
| 125 | public String getDeobfInnerClassName( String obfName ) | 131 | public String getDeobfInnerClassName( String obfName ) |
| 126 | { | 132 | { |
| 133 | assert( isSimpleClassName( obfName ) ); | ||
| 127 | ClassMapping classMapping = m_innerClassesByObf.get( obfName ); | 134 | ClassMapping classMapping = m_innerClassesByObf.get( obfName ); |
| 128 | if( classMapping != null ) | 135 | if( classMapping != null ) |
| 129 | { | 136 | { |
| @@ -134,6 +141,7 @@ public class ClassMapping implements Serializable, Comparable<ClassMapping> | |||
| 134 | 141 | ||
| 135 | public void setInnerClassName( String obfName, String deobfName ) | 142 | public void setInnerClassName( String obfName, String deobfName ) |
| 136 | { | 143 | { |
| 144 | assert( isSimpleClassName( obfName ) ); | ||
| 137 | ClassMapping classMapping = getOrCreateInnerClass( obfName ); | 145 | ClassMapping classMapping = getOrCreateInnerClass( obfName ); |
| 138 | if( classMapping.getDeobfName() != null ) | 146 | if( classMapping.getDeobfName() != null ) |
| 139 | { | 147 | { |
| @@ -143,6 +151,7 @@ public class ClassMapping implements Serializable, Comparable<ClassMapping> | |||
| 143 | classMapping.setDeobfName( deobfName ); | 151 | classMapping.setDeobfName( deobfName ); |
| 144 | if( deobfName != null ) | 152 | if( deobfName != null ) |
| 145 | { | 153 | { |
| 154 | assert( isSimpleClassName( deobfName ) ); | ||
| 146 | boolean wasAdded = m_innerClassesByDeobf.put( deobfName, classMapping ) == null; | 155 | boolean wasAdded = m_innerClassesByDeobf.put( deobfName, classMapping ) == null; |
| 147 | assert( wasAdded ); | 156 | assert( wasAdded ); |
| 148 | } | 157 | } |
| @@ -442,4 +451,9 @@ public class ClassMapping implements Serializable, Comparable<ClassMapping> | |||
| 442 | } | 451 | } |
| 443 | return false; | 452 | return false; |
| 444 | } | 453 | } |
| 454 | |||
| 455 | public static boolean isSimpleClassName( String name ) | ||
| 456 | { | ||
| 457 | return name.indexOf( '/' ) < 0 && name.indexOf( '$' ) < 0; | ||
| 458 | } | ||
| 445 | } | 459 | } |