{"record":{"id":"30f6c6627006124d","repo":"skylot/jadx","slug":"not-implemented","errorCode":null,"errorMessage":"Not implemented","messagePattern":"Not implemented","errorType":"exception","errorClass":"JadxRuntimeException","httpStatus":null,"severity":"error","filePath":"jadx-gui/src/main/java/jadx/gui/cache/usage/UsageData.java","lineNumber":80,"sourceCode":"\t\t\tif (mthUsageData != null) {\n\t\t\t\tmth.setUseIn(resolveMthList(mthUsageData.getUsage()));\n\t\t\t\tmth.setUsed(resolveMthList(mthUsageData.getUses()));\n\t\t\t\tmth.setUnresolvedUsed(resolveMthInfoList(mthUsageData.getUnresolvedUsage()));\n\t\t\t\tmth.setCallsSelf(mthUsageData.callsSelf());\n\t\t\t}\n\t\t}\n\t\tMap<String, FldUsageData> fldUsage = clsUsageData.getFldUsage();\n\t\tfor (FieldNode fld : cls.getFields()) {\n\t\t\tFldUsageData fldUsageData = fldUsage.get(fld.getFieldInfo().getShortId());\n\t\t\tif (fldUsageData != null) {\n\t\t\t\tfld.setUseIn(resolveMthList(fldUsageData.getUsage()));\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic void visitUsageData(IUsageInfoVisitor visitor) {\n\t\tthrow new JadxRuntimeException(\"Not implemented\");\n\t}\n\n\tprivate List<ClassNode> resolveClsList(List<String> clsList) {\n\t\treturn Utils.collectionMap(clsList, root::resolveRawClass);\n\t}\n\n\tprivate List<MethodNode> resolveMthList(List<MthRef> mthRefList) {\n\t\treturn Utils.collectionMap(mthRefList, m -> root.resolveDirectMethod(m.getCls(), m.getShortId()));\n\t}\n\n\tprivate List<MethodInfo> resolveMthInfoList(List<IMethodRef> mthRefList) {\n\t\treturn Utils.collectionMap(mthRefList, m -> MethodInfo.fromRef(root, m));\n\t}\n}\n","sourceCodeStart":62,"sourceCodeEnd":95,"githubUrl":"https://github.com/skylot/jadx/blob/e738a26571d02919f01df40de93bc9a44dee4e18/jadx-gui/src/main/java/jadx/gui/cache/usage/UsageData.java#L62-L95","documentation":"UsageData implements IUsageInfoVisitor-based traversal, but the visitUsageData method is not yet implemented — it unconditionally throws JadxRuntimeException. This is a stub indicating the feature (bulk usage data export/visitation) is planned but incomplete.","triggerScenarios":"Any code that obtains a UsageData instance and calls visitUsageData(visitor) will immediately throw, regardless of input. This method is part of an interface contract but has no working implementation in the current version.","commonSituations":"A plugin, script, or tool tries to programmatically enumerate all usage data at once. Code was written against the interface without checking implementation status. Using an older or development build where this was left as a TODO.","solutions":["Do not call visitUsageData — use the per-class/per-field usage accessors instead (which are implemented)","Check the jadx changelog or source for when this method gets implemented","File a feature request if you need bulk usage export","Use the individual getUsage methods on ClassNode/MethodNode/FieldNode as an alternative"],"exampleFix":"// Instead of bulk visitation, iterate classes individually:\nfor (JavaClass cls : decompiler.getClasses()) {\n    ClassNode cn = cls.getClassNode();\n    // use cn.getUseIn(), cn.getMethods(), etc. — these are implemented\n}\n// Avoid: usageData.visitUsageData(visitor); // throws \"Not implemented\"","handlingStrategy":"validation","validationCode":"// Avoid calling the unimplemented method\n// if (usageData instanceof UsageData) { /* visitUsageData throws */ }","typeGuard":"// Check before calling — no working implementation exists:\n// Use reflection or version check to avoid calling visitUsageData on stubs.\n// Simpler: never call it; use per-class accessors instead.","tryCatchPattern":"try {\n    usageData.visitUsageData(visitor);\n} catch (JadxRuntimeException e) {\n    if (e.getMessage().equals(\"Not implemented\")) {\n        LOG.warn(\"visitUsageData not supported in this version\");\n        // fall back to per-class iteration\n    }\n}","preventionTips":["Do not call visitUsageData — it is a stub","Use implemented per-class usage accessors instead","Track jadx releases for when this is implemented"],"tags":["not-implemented","api-stub","usage-data","jadx-gui"],"backgroundTag":null,"analyzedSha":"e738a26571d02919f01df40de93bc9a44dee4e18","analyzedAt":"2026-08-14T00:10:24.238Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}