Package org.sonar.java.resolve
Class BytecodeCompleter
- java.lang.Object
-
- org.sonar.java.resolve.BytecodeCompleter
-
public class BytecodeCompleter extends Object
-
-
Field Summary
Fields Modifier and Type Field Description static int
ASM_API_VERSION
-
Constructor Summary
Constructors Constructor Description BytecodeCompleter(SquidClassLoader classLoader, ParametrizedTypeCache parametrizedTypeCache)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Set<String>
classesNotFound()
void
complete(JavaSymbol symbol)
Object
constantValue(Symbol owner, String constantName)
This method reads constant values in bytecode.JavaSymbol.PackageJavaSymbol
enterPackage(String fullname)
JavaSymbol.TypeJavaSymbol
getClassSymbol(JavaSymbol.TypeJavaSymbol classSymbolOwner, String bytecodeName, int flags)
void
init(Symbols symbols)
JavaSymbol
loadClass(String fullname)
Note: Attempt to find something like "java.class" on case-insensitive file system can result in unwanted loading of "JAVA.class".JavaSymbol.TypeJavaSymbol
registerClass(JavaSymbol.TypeJavaSymbol classSymbol)
-
-
-
Field Detail
-
ASM_API_VERSION
public static final int ASM_API_VERSION
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
BytecodeCompleter
public BytecodeCompleter(SquidClassLoader classLoader, ParametrizedTypeCache parametrizedTypeCache)
-
-
Method Detail
-
init
public void init(Symbols symbols)
-
registerClass
public JavaSymbol.TypeJavaSymbol registerClass(JavaSymbol.TypeJavaSymbol classSymbol)
-
complete
public void complete(JavaSymbol symbol)
-
constantValue
@CheckForNull public Object constantValue(Symbol owner, String constantName)
This method reads constant values in bytecode. It should be called when resolving semantics from source.
-
getClassSymbol
public JavaSymbol.TypeJavaSymbol getClassSymbol(@Nullable JavaSymbol.TypeJavaSymbol classSymbolOwner, String bytecodeName, int flags)
-
loadClass
public JavaSymbol loadClass(String fullname)
Note: Attempt to find something like "java.class" on case-insensitive file system can result in unwanted loading of "JAVA.class". This method performs check of class name within file in order to avoid such situation. This is definitely not the best solution in terms of performance, but acceptable for now.- Returns:
- symbol for requested class, if corresponding class file exists, and
Resolve.JavaSymbolNotFound
otherwise
-
enterPackage
public JavaSymbol.PackageJavaSymbol enterPackage(String fullname)
-
-