summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/analysis/JarIndex.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cuchaz/enigma/analysis/JarIndex.java')
-rw-r--r--src/cuchaz/enigma/analysis/JarIndex.java57
1 files changed, 30 insertions, 27 deletions
diff --git a/src/cuchaz/enigma/analysis/JarIndex.java b/src/cuchaz/enigma/analysis/JarIndex.java
index b479b69..4279ded 100644
--- a/src/cuchaz/enigma/analysis/JarIndex.java
+++ b/src/cuchaz/enigma/analysis/JarIndex.java
@@ -79,7 +79,7 @@ public class JarIndex
79 m_bridgeMethods = Maps.newHashMap(); 79 m_bridgeMethods = Maps.newHashMap();
80 } 80 }
81 81
82 public void indexJar( JarFile jar ) 82 public void indexJar( JarFile jar, boolean buildInnerClasses )
83 { 83 {
84 // step 1: read the class names 84 // step 1: read the class names
85 for( ClassEntry classEntry : JarClassIterator.getClassEntries( jar ) ) 85 for( ClassEntry classEntry : JarClassIterator.getClassEntries( jar ) )
@@ -125,40 +125,43 @@ public class JarIndex
125 } 125 }
126 } 126 }
127 127
128 // step 4: index inner classes and anonymous classes 128 if( buildInnerClasses )
129 for( CtClass c : JarClassIterator.classes( jar ) )
130 { 129 {
131 ClassRenamer.moveAllClassesOutOfDefaultPackage( c, Constants.NonePackage ); 130 // step 4: index inner classes and anonymous classes
132 String outerClassName = findOuterClass( c ); 131 for( CtClass c : JarClassIterator.classes( jar ) )
133 if( outerClassName != null )
134 { 132 {
135 String innerClassName = Descriptor.toJvmName( c.getName() ); 133 ClassRenamer.moveAllClassesOutOfDefaultPackage( c, Constants.NonePackage );
136 m_innerClasses.put( outerClassName, innerClassName ); 134 String outerClassName = findOuterClass( c );
137 m_outerClasses.put( innerClassName, outerClassName ); 135 if( outerClassName != null )
138
139 if( isAnonymousClass( c, outerClassName ) )
140 { 136 {
141 m_anonymousClasses.add( innerClassName ); 137 String innerClassName = Descriptor.toJvmName( c.getName() );
138 m_innerClasses.put( outerClassName, innerClassName );
139 m_outerClasses.put( innerClassName, outerClassName );
142 140
143 // DEBUG 141 if( isAnonymousClass( c, outerClassName ) )
144 //System.out.println( "ANONYMOUS: " + outerClassName + "$" + innerClassName ); 142 {
145 } 143 m_anonymousClasses.add( innerClassName );
146 else 144
147 { 145 // DEBUG
148 // DEBUG 146 //System.out.println( "ANONYMOUS: " + outerClassName + "$" + innerClassName );
149 //System.out.println( "INNER: " + outerClassName + "$" + innerClassName ); 147 }
148 else
149 {
150 // DEBUG
151 //System.out.println( "INNER: " + outerClassName + "$" + innerClassName );
152 }
150 } 153 }
151 } 154 }
155
156 // step 5: update other indices with inner class info
157 Map<String,String> renames = Maps.newHashMap();
158 for( Map.Entry<String,String> entry : m_outerClasses.entrySet() )
159 {
160 renames.put( entry.getKey(), entry.getValue() + "$" + new ClassEntry( entry.getKey() ).getSimpleName() );
161 }
162 renameClasses( renames );
152 } 163 }
153 164
154 // step 5: update other indices with inner class info
155 Map<String,String> renames = Maps.newHashMap();
156 for( Map.Entry<String,String> entry : m_outerClasses.entrySet() )
157 {
158 renames.put( entry.getKey(), entry.getValue() + "$" + new ClassEntry( entry.getKey() ).getSimpleName() );
159 }
160 renameClasses( renames );
161
162 // step 5: update other indices with bridge method info 165 // step 5: update other indices with bridge method info
163 renameMethods( m_bridgeMethods ); 166 renameMethods( m_bridgeMethods );
164 } 167 }