public ClassInfo(ClassInfoLoader loader, ClassNode classNode) { this(loader, typeFromPathName(classNode.name), classNode.access, classNode.superName == null ? null : typeFromPathName(classNode.superName), transform((List<String>) classNode.interfaces, ParameterizedType::typeFromPathName), (List<MethodNode>) classNode.methods); }
private static ParameterizedType toCodecType(ThriftStructMetadata metadata) { String className = getPathName(metadata.getStructClass()) + "Codec"; Type type = metadata.getStructType(); if (type instanceof java.lang.reflect.ParameterizedType) { className += Arrays.stream(((java.lang.reflect.ParameterizedType) type).getActualTypeArguments()) .map(arg -> arg.getTypeName().replaceAll("[^a-zA-Z0-9]+", "_")) .collect(joining("$", "$$", "")); } return typeFromPathName(PACKAGE + "/" + className); }
superClass = typeFromPathName(classReader.readUTF8(superClassIndex, buf)); header += 8; for (int i = 0; i < interfaceCount; ++i) { interfaces.add(typeFromPathName(classReader.readClass(header, buf))); header += 2;
@Override protected String getCommonSuperClass(String aType, String bType) { ClassInfo aClassInfo = classInfoLoader.loadClassInfo(typeFromPathName(aType)); ClassInfo bClassInfo = classInfoLoader.loadClassInfo(typeFromPathName(bType)); if (aClassInfo.isAssignableFrom(bClassInfo)) { return aType; } if (bClassInfo.isAssignableFrom(aClassInfo)) { return bType; } if (aClassInfo.isInterface() || bClassInfo.isInterface()) { return "java/lang/Object"; } else { do { aClassInfo = aClassInfo.getSuperclass(); } while (!aClassInfo.isAssignableFrom(bClassInfo)); return aClassInfo.getType().getClassName(); } } }