@Nullable private JavaSymbol.TypeJavaSymbol getEnclosingClass(String shortName, String packageName) { JavaSymbol.TypeJavaSymbol owner = null; String enclosingClassName = Convert.enclosingClassName(shortName); if (StringUtils.isNotEmpty(enclosingClassName)) { enclosingClassName = Convert.fullName(packageName, enclosingClassName); InputStream inputStream = null; try { inputStream = inputStreamFor(enclosingClassName); while (inputStream == null && enclosingClassName.endsWith("$")) { enclosingClassName = enclosingClassName.substring(0, enclosingClassName.length() - 1); inputStream = inputStreamFor(enclosingClassName); } } finally { Closeables.closeQuietly(inputStream); } owner = getClassSymbol(enclosingClassName); } return owner; }
@Nullable private JavaSymbol.TypeJavaSymbol getEnclosingClass(String shortName, String packageName) { JavaSymbol.TypeJavaSymbol owner = null; String enclosingClassName = Convert.enclosingClassName(shortName); if (StringUtils.isNotEmpty(enclosingClassName)) { enclosingClassName = Convert.fullName(packageName, enclosingClassName); InputStream inputStream = null; try { inputStream = inputStreamFor(enclosingClassName); while (inputStream == null && enclosingClassName.endsWith("$")) { enclosingClassName = enclosingClassName.substring(0, enclosingClassName.length() - 1); inputStream = inputStreamFor(enclosingClassName); } } finally { Closeables.closeQuietly(inputStream); } owner = getClassSymbol(enclosingClassName); } return owner; }
@Override public void complete(JavaSymbol symbol) { LOG.debug("Completing symbol : " + symbol.name); //complete outer class to set flags for inner class properly. if (symbol.owner.isKind(JavaSymbol.TYP)) { symbol.owner.complete(); } String bytecodeName = formFullName(symbol); JavaSymbol.TypeJavaSymbol classSymbol = getClassSymbol(bytecodeName); Preconditions.checkState(classSymbol == symbol); InputStream inputStream = null; ClassReader classReader = null; try { inputStream = inputStreamFor(bytecodeName); if(inputStream != null) { classReader = new ClassReader(inputStream); } } catch (IOException e) { throw Throwables.propagate(e); } finally { Closeables.closeQuietly(inputStream); } if (classReader != null) { classReader.accept( new BytecodeVisitor(this, symbols, (JavaSymbol.TypeJavaSymbol) symbol, parametrizedTypeCache), ClassReader.SKIP_CODE | ClassReader.SKIP_FRAMES | ClassReader.SKIP_DEBUG); } }
@Override public void complete(JavaSymbol symbol) { LOG.debug("Completing symbol : " + symbol.name); //complete outer class to set flags for inner class properly. if (symbol.owner.isKind(JavaSymbol.TYP)) { symbol.owner.complete(); } String bytecodeName = formFullName(symbol); JavaSymbol.TypeJavaSymbol classSymbol = getClassSymbol(bytecodeName); Preconditions.checkState(classSymbol == symbol); InputStream inputStream = null; ClassReader classReader = null; try { inputStream = inputStreamFor(bytecodeName); if(inputStream != null) { classReader = new ClassReader(inputStream); } } catch (IOException e) { throw Throwables.propagate(e); } finally { Closeables.closeQuietly(inputStream); } if (classReader != null) { classReader.accept( new BytecodeVisitor(this, symbols, (JavaSymbol.TypeJavaSymbol) symbol, parametrizedTypeCache), ClassReader.SKIP_CODE | ClassReader.SKIP_FRAMES | ClassReader.SKIP_DEBUG); } }
InputStream inputStream = inputStreamFor(fullname); String bytecodeName = Convert.bytecodeName(fullname);
InputStream inputStream = inputStreamFor(fullname); String bytecodeName = Convert.bytecodeName(fullname);