public class AsmReferenceResolver
extends Object
Helper class for resolving class references encountered in bytecode stubs decompiled from compiled classes. Bridges between ASM's internal type descriptors/names and Groovy's ClassNode representation by consulting both classes currently being compiled in the compilation unit and already-loaded classes via the ClassNodeResolver.
AsmReferenceResolver implements a two-tier lookup strategy:
The resolver handles multiple bytecode formats:
"I" ? int.class)."java/lang/String")
to dot notation and resolved via resolveClass(String).The resolver distinguishes between two resolution modes:
null if the class cannot be resolved.
Used for optional type information (e.g., exception types).AsmReferenceResolver instances are typically created once per compilation unit and are thread-safe for concurrent read access. The underlying ClassNodeResolver and CompilationUnit manage their own synchronization.
| Constructor and description |
|---|
AsmReferenceResolver(ClassNodeResolver resolver, CompilationUnit unit)Creates an ASM reference resolver for a compilation unit. |
| Type Params | Return Type | Name and description |
|---|---|---|
|
public ClassNode |
resolveClass(String className)Resolves a fully qualified class name to a ClassNode. |
|
public ClassNode |
resolveClassNullable(String className)Attempts to resolve a fully qualified class name to a ClassNode, returning null if not found.
|
|
public Class |
resolveJvmClass(String name)Resolves a fully qualified class name to a runtime JVM Class object. |
|
public ClassNode |
resolveType(org.objectweb.asm.Type type)Resolves an ASM org.objectweb.asm.Type to a ClassNode, handling array types by wrapping element types. |
Creates an ASM reference resolver for a compilation unit.
resolver - the ClassNodeResolver used to resolve class namesunit - the CompilationUnit containing classes being compiled and metadataResolves a fully qualified class name to a ClassNode. First checks classes being compiled in this unit, then consults the resolver for already-loaded classes.
className - the fully qualified class name Attempts to resolve a fully qualified class name to a ClassNode, returning null if not found.
First checks classes being compiled in this unit, then consults the resolver for already-loaded classes.
className - the fully qualified class namenull if not resolvableResolves a fully qualified class name to a runtime JVM Class object. Uses the compilation unit's class loader to load the class.
name - the fully qualified class nameResolves an ASM org.objectweb.asm.Type to a ClassNode, handling array types by wrapping element types.
type - the ASM type to resolveCopyright © 2003-2026 The Apache Software Foundation. All rights reserved.