Skip to content

Commit 03dc822

Browse files
authored
Merge pull request #1253 from NativeScript/trifonov/metadata-fix
Metadata fix
2 parents a8d1378 + b4ebcc3 commit 03dc822

File tree

2 files changed

+23
-9
lines changed

2 files changed

+23
-9
lines changed

test-app/build-tools/android-metadata-generator/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ compileJava {
3636
compileJava.outputs.dir("$rootDir/dist/classes")
3737

3838
dependencies {
39-
compile 'org.apache.bcel:bcel:6.0'
39+
compile 'org.apache.bcel:bcel:6.2'
4040
compile files("./src/libs/dx.jar")
4141
}
4242

test-app/build-tools/android-metadata-generator/src/src/com/telerik/metadata/bcl/ClassInfo.java

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import com.telerik.metadata.desc.MethodDescriptor;
88

99
import org.apache.bcel.classfile.Attribute;
10+
import org.apache.bcel.classfile.ConstantClass;
11+
import org.apache.bcel.classfile.ConstantPool;
1012
import org.apache.bcel.classfile.ConstantUtf8;
1113
import org.apache.bcel.classfile.Field;
1214
import org.apache.bcel.classfile.InnerClass;
@@ -36,19 +38,18 @@ private void init() {
3638
return;
3739
}
3840
boolean found = false;
41+
String fullClassName = getClassName(clazz.getClassNameIndex());
42+
if (fullClassName == null) {
43+
return;
44+
}
45+
3946
for (Attribute a : clazz.getAttributes()) {
4047
if (a instanceof InnerClasses) {
4148
InnerClass[] i = ((InnerClasses) a).getInnerClasses();
4249
for (InnerClass ic : i) {
50+
String innerClassName = getClassName(ic.getInnerClassIndex());
4351

44-
ConstantUtf8 cname = (ConstantUtf8) clazz
45-
.getConstantPool().getConstant(ic.getInnerNameIndex());
46-
if (cname == null) {
47-
continue;
48-
}
49-
50-
String innerClassname = cname.getBytes();
51-
if (name.equals(innerClassname)) {
52+
if (fullClassName.equals(innerClassName)) {
5253
int flags = ic.getInnerAccessFlags();
5354
clazz.setAccessFlags(flags);
5455
found = true;
@@ -63,6 +64,19 @@ private void init() {
6364
}
6465
}
6566

67+
private String getClassName(int classIndex) {
68+
ConstantPool constantPool = clazz.getConstantPool();
69+
ConstantClass innerClassNameIndex = (ConstantClass)constantPool.getConstant(classIndex);
70+
if (innerClassNameIndex == null) {
71+
return null;
72+
}
73+
ConstantUtf8 className = (ConstantUtf8)constantPool.getConstant(innerClassNameIndex.getNameIndex());
74+
if (className == null) {
75+
return null;
76+
}
77+
return className.getBytes();
78+
}
79+
6680
@Override
6781
public boolean isClass() {
6882
return clazz.isClass();

0 commit comments

Comments
 (0)