public List<JavaMethod> getMethods() { decompile(); return methods; }
public List<JavaField> getFields() { decompile(); return fields; }
public List<JavaClass> getInnerClasses() { decompile(); return innerClasses; }
JavaMethod getJavaMethodByNode(MethodNode mth) { JavaMethod javaMethod = methodsMap.get(mth); if (javaMethod != null) { return javaMethod; } // parent class not loaded yet JavaClass javaClass = classesMap.get(mth.getParentClass()); if (javaClass != null) { javaClass.decompile(); return methodsMap.get(mth); } return null; }
JavaField getJavaFieldByNode(FieldNode fld) { JavaField javaField = fieldsMap.get(fld); if (javaField != null) { return javaField; } // parent class not loaded yet JavaClass javaClass = classesMap.get(fld.getParentClass()); if (javaClass != null) { javaClass.decompile(); return fieldsMap.get(fld); } return null; }
private Map<CodePosition, Object> getCodeAnnotations() { decompile(); CodeWriter code = cls.getCode(); if (code == null) { return Collections.emptyMap(); } return code.getAnnotations(); }
public Integer getSourceLine(int decompiledLine) { decompile(); return cls.getCode().getLineMapping().get(decompiledLine); }
public synchronized void load() { if (!loaded) { cls.decompile(); cls.unload(); loaded = true; } update(); }
@Nullable public CodePosition getDefinitionPosition(JavaNode javaNode) { JavaClass jCls = javaNode.getTopParentClass(); jCls.decompile(); int defLine = javaNode.getDecompiledLine(); if (defLine == 0) { return null; } return new CodePosition(jCls, defLine, 0); }
public String getCode() { CodeWriter code = cls.getCode(); if (code == null) { decompile(); code = cls.getCode(); if (code == null) { return ""; } } return code.getCodeStr(); }
private void processAll(JadxDecompiler jadx) { for (JavaClass javaClass : jadx.getClasses()) { javaClass.decompile(); } }
private void appendSourcesSave(ExecutorService executor, File outDir) { for (JavaClass cls : getClasses()) { if (cls.getClassNode().contains(AFlag.DONT_GENERATE)) { continue; } executor.execute(() -> { try { cls.decompile(); SaveCode.save(outDir, args, cls.getClassNode()); } catch (Exception e) { LOG.error("Error saving class: {}", cls.getFullName(), e); } }); } }