Package edu.umd.cs.findbugs.classfile
Class DescriptorFactory
- java.lang.Object
-
- edu.umd.cs.findbugs.classfile.DescriptorFactory
-
public class DescriptorFactory extends java.lang.ObjectFactory for creating ClassDescriptors, MethodDescriptors, and FieldDescriptors.
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Map<java.lang.String,ClassDescriptor>classDescriptorMapprivate java.util.Map<java.lang.String,ClassDescriptor>dottedClassDescriptorMapprivate java.util.Map<FieldDescriptor,FieldDescriptor>fieldDescriptorMapprivate static java.lang.ThreadLocal<DescriptorFactory>instanceThreadLocalprivate java.util.Map<MethodDescriptor,MethodDescriptor>methodDescriptorMapprivate static ClassDescriptorMODULE_INFO
-
Constructor Summary
Constructors Modifier Constructor Description privateDescriptorFactory()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcanonicalize(FieldDescriptor m)voidcanonicalize(MethodDescriptor m)static voidclearInstance()static ClassDescriptorcreateClassDescriptor(java.lang.Class<?> aClass)static ClassDescriptorcreateClassDescriptor(java.lang.String className)static ClassDescriptor[]createClassDescriptor(java.lang.String[] classNames)static ClassDescriptorcreateClassDescriptor(org.apache.bcel.classfile.JavaClass c)static ClassDescriptorcreateClassDescriptorFromDottedClassName(java.lang.String dottedClassName)static ClassDescriptorcreateClassDescriptorFromFieldSignature(java.lang.String signature)Create a class descriptor from a field signaturestatic ClassDescriptorcreateClassDescriptorFromResourceName(java.lang.String resourceName)Create a class descriptor from a resource name.static ClassDescriptorcreateClassDescriptorFromSignature(java.lang.String signature)static ClassDescriptorcreateClassOrObjectDescriptorFromSignature(java.lang.String signature)java.util.Collection<ClassDescriptor>getAllClassDescriptors()ClassDescriptorgetClassDescriptor(java.lang.Class<?> actualClass)ClassDescriptorgetClassDescriptor(java.lang.String className)Get a ClassDescriptor for a class name in VM (slashed) format.static ClassDescriptorgetClassDescriptor(org.apache.bcel.generic.ObjectType type)Get a ClassDescriptor for the class described by given ObjectType object.ClassDescriptorgetClassDescriptorForDottedClassName(java.lang.String dottedClassName)Get a ClassDescriptor for a class name in dotted format.FieldDescriptorgetFieldDescriptor(FieldAnnotation ma)FieldDescriptorgetFieldDescriptor(java.lang.String className, java.lang.String name, java.lang.String signature, boolean isStatic)Get a FieldDescriptor.FieldDescriptorgetFieldDescriptor(java.lang.String className, org.apache.bcel.classfile.Field ma)MethodDescriptorgetMethodDescriptor(MethodAnnotation ma)MethodDescriptorgetMethodDescriptor(java.lang.String className, java.lang.String name, java.lang.String signature, boolean isStatic)Get a MethodDescriptor.MethodDescriptorgetMethodDescriptor(org.apache.bcel.classfile.JavaClass jClass, org.apache.bcel.classfile.Method method)static DescriptorFactoryinstance()Get the singleton instance of the DescriptorFactory.static booleanisClassResource(java.lang.String resourceName)Determine whether or not the given resource name refers to a class.static booleanisModuleInfo(java.lang.String resourceName)Determine whether or not the given resource name refers to a module-info class.voidprofile()voidpurge(java.util.Collection<ClassDescriptor> unusable)
-
-
-
Field Detail
-
instanceThreadLocal
private static java.lang.ThreadLocal<DescriptorFactory> instanceThreadLocal
-
classDescriptorMap
private final java.util.Map<java.lang.String,ClassDescriptor> classDescriptorMap
-
dottedClassDescriptorMap
private final java.util.Map<java.lang.String,ClassDescriptor> dottedClassDescriptorMap
-
methodDescriptorMap
private final java.util.Map<MethodDescriptor,MethodDescriptor> methodDescriptorMap
-
fieldDescriptorMap
private final java.util.Map<FieldDescriptor,FieldDescriptor> fieldDescriptorMap
-
MODULE_INFO
private static final ClassDescriptor MODULE_INFO
-
-
Method Detail
-
instance
public static DescriptorFactory instance()
Get the singleton instance of the DescriptorFactory.- Returns:
- the singleton instance of the DescriptorFactory
-
clearInstance
public static void clearInstance()
-
getAllClassDescriptors
public java.util.Collection<ClassDescriptor> getAllClassDescriptors()
-
purge
public void purge(java.util.Collection<ClassDescriptor> unusable)
-
getClassDescriptor
@Nonnull public ClassDescriptor getClassDescriptor(java.lang.Class<?> actualClass)
-
getClassDescriptor
@Nonnull public ClassDescriptor getClassDescriptor(@SlashedClassName java.lang.String className)
Get a ClassDescriptor for a class name in VM (slashed) format.- Parameters:
className- a class name in VM (slashed) format- Returns:
- ClassDescriptor for that class
-
getClassDescriptorForDottedClassName
public ClassDescriptor getClassDescriptorForDottedClassName(@DottedClassName java.lang.String dottedClassName)
Get a ClassDescriptor for a class name in dotted format.- Parameters:
dottedClassName- a class name in dotted format- Returns:
- ClassDescriptor for that class
-
getMethodDescriptor
public MethodDescriptor getMethodDescriptor(org.apache.bcel.classfile.JavaClass jClass, org.apache.bcel.classfile.Method method)
-
getMethodDescriptor
public MethodDescriptor getMethodDescriptor(@SlashedClassName java.lang.String className, java.lang.String name, java.lang.String signature, boolean isStatic)
Get a MethodDescriptor.- Parameters:
className- name of the class containing the method, in VM format (e.g., "java/lang/String")name- name of the methodsignature- signature of the methodisStatic- true if method is static, false otherwise- Returns:
- MethodDescriptor
-
profile
public void profile()
-
canonicalize
public void canonicalize(MethodDescriptor m)
-
canonicalize
public void canonicalize(FieldDescriptor m)
-
getMethodDescriptor
public MethodDescriptor getMethodDescriptor(MethodAnnotation ma)
-
getFieldDescriptor
public FieldDescriptor getFieldDescriptor(@SlashedClassName java.lang.String className, java.lang.String name, java.lang.String signature, boolean isStatic)
Get a FieldDescriptor.- Parameters:
className- the name of the class the field belongs to, in VM format (e.g., "java/lang/String")name- the name of the fieldsignature- the field signature (type)isStatic- true if field is static, false if not- Returns:
- FieldDescriptor
-
getFieldDescriptor
public FieldDescriptor getFieldDescriptor(@SlashedClassName java.lang.String className, org.apache.bcel.classfile.Field ma)
-
getFieldDescriptor
public FieldDescriptor getFieldDescriptor(FieldAnnotation ma)
-
getClassDescriptor
public static ClassDescriptor getClassDescriptor(org.apache.bcel.generic.ObjectType type)
Get a ClassDescriptor for the class described by given ObjectType object.- Parameters:
type- an ObjectType- Returns:
- a ClassDescriptor for the class described by the ObjectType
-
createClassDescriptor
public static ClassDescriptor createClassDescriptor(org.apache.bcel.classfile.JavaClass c)
-
createClassDescriptorFromResourceName
public static ClassDescriptor createClassDescriptorFromResourceName(java.lang.String resourceName)
Create a class descriptor from a resource name.- Parameters:
resourceName- the resource name- Returns:
- the class descriptor
-
createClassDescriptorFromFieldSignature
@CheckForNull public static ClassDescriptor createClassDescriptorFromFieldSignature(java.lang.String signature)
Create a class descriptor from a field signature
-
isClassResource
public static boolean isClassResource(java.lang.String resourceName)
Determine whether or not the given resource name refers to a class.- Parameters:
resourceName- the resource name- Returns:
- true if the resource is a class, false otherwise
-
isModuleInfo
public static boolean isModuleInfo(java.lang.String resourceName)
Determine whether or not the given resource name refers to a module-info class.- Parameters:
resourceName- the resource name- Returns:
- true if the resource is a module-info class, false otherwise
-
createClassDescriptorFromSignature
public static ClassDescriptor createClassDescriptorFromSignature(java.lang.String signature)
-
createClassOrObjectDescriptorFromSignature
public static ClassDescriptor createClassOrObjectDescriptorFromSignature(java.lang.String signature)
-
createClassDescriptor
public static ClassDescriptor createClassDescriptor(java.lang.Class<?> aClass)
-
createClassDescriptor
@Nonnull public static ClassDescriptor createClassDescriptor(@SlashedClassName java.lang.String className)
-
createClassDescriptor
public static ClassDescriptor[] createClassDescriptor(java.lang.String[] classNames)
-
createClassDescriptorFromDottedClassName
public static ClassDescriptor createClassDescriptorFromDottedClassName(java.lang.String dottedClassName)
-
-