Class TypeMaker
- java.lang.Object
-
- org.jd.core.v1.service.converter.classfiletojavasyntax.util.TypeMaker
-
public class TypeMaker extends java.lang.Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
TypeMaker.ClassPathLoader
static class
TypeMaker.MethodTypes
private static class
TypeMaker.SignatureReader
static class
TypeMaker.TypeTypes
-
Field Summary
Fields Modifier and Type Field Description private java.util.HashMap<java.lang.Long,java.lang.Boolean>
assignableRawTypes
private TypeMaker.ClassPathLoader
classPathLoader
private java.util.HashMap<java.lang.String,ObjectType>
descriptorToObjectType
private java.util.HashMap<java.lang.String,java.lang.String[]>
hierarchy
private static java.util.HashMap<java.lang.String,ObjectType>
INTERNALNAME_TO_OBJECTPRIMITIVETYPE
private java.util.HashMap<java.lang.String,Type>
internalTypeNameFieldNameToType
private java.util.HashMap<java.lang.String,TypeMaker.MethodTypes>
internalTypeNameMethodNameDescriptorToMethodTypes
private java.util.HashMap<java.lang.String,java.lang.Boolean>
internalTypeNameMethodNameParameterCountToBoolean
private java.util.HashMap<java.lang.String,ObjectType>
internalTypeNameToObjectType
private java.util.HashMap<java.lang.String,TypeMaker.TypeTypes>
internalTypeNameToTypeTypes
private Loader
loader
private java.util.HashMap<java.lang.String,TypeMaker.MethodTypes>
signatureToMethodTypes
private java.util.HashMap<java.lang.String,Type>
signatureToType
private java.util.HashMap<java.lang.Long,ObjectType>
superParameterizedObjectTypes
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static int
countDimension(java.lang.String descriptor)
private ObjectType
create(java.lang.String internalTypeName)
private static java.lang.String
extractLocalClassName(java.lang.String name)
private static java.lang.String[]
getExceptionTypeNames(Method method)
private static boolean
isAClassTypeSignature(TypeMaker.SignatureReader reader)
private static boolean
isAReferenceTypeSignature(TypeMaker.SignatureReader reader)
boolean
isAssignable(java.util.Map<java.lang.String,BaseType> typeBounds, ObjectType left, ObjectType right)
private static boolean
isATypeArgument(TypeMaker.SignatureReader reader)
private static boolean
isATypeArguments(TypeMaker.SignatureReader reader)
private boolean
isRawTypeAssignable(long leftHashCode, java.lang.String leftInternalName, java.lang.String rightInternalName)
boolean
isRawTypeAssignable(ObjectType left, ObjectType right)
private java.lang.Object[]
loadClassFile(java.lang.String internalTypeName, ClassFileReader reader)
private java.lang.Object[]
loadConstants(ClassFileReader reader)
private boolean
loadFieldsAndMethods(java.lang.String internalTypeName)
private void
loadFieldsAndMethods(java.lang.String internalTypeName, byte[] data)
private Type
loadFieldType(java.lang.String internalTypeName, java.lang.String fieldName, java.lang.String descriptor)
private Type
loadFieldType(ObjectType objectType, java.lang.String fieldName, java.lang.String descriptor)
private TypeMaker.MethodTypes
loadMethodTypes(java.lang.String internalTypeName, java.lang.String methodName, java.lang.String descriptor)
private TypeMaker.MethodTypes
loadMethodTypes(ObjectType objectType, java.lang.String methodName, java.lang.String descriptor)
private ObjectType
loadType(java.lang.String internalTypeName)
private ObjectType
loadType(java.lang.String internalTypeName, byte[] data)
Type
makeFieldType(java.lang.String internalTypeName, java.lang.String fieldName, java.lang.String descriptor)
ObjectType
makeFromDescriptor(java.lang.String descriptor)
ObjectType
makeFromDescriptorOrInternalTypeName(java.lang.String descriptorOrInternalTypeName)
private ObjectType
makeFromDescriptorWithoutBracket(java.lang.String descriptor)
ObjectType
makeFromInternalTypeName(java.lang.String internalTypeName)
Type
makeFromSignature(java.lang.String signature)
TypeMaker.MethodTypes
makeMethodTypes(java.lang.String descriptor)
TypeMaker.MethodTypes
makeMethodTypes(java.lang.String internalTypeName, java.lang.String methodName, java.lang.String descriptor)
TypeMaker.TypeTypes
makeTypeTypes(java.lang.String internalTypeName)
private TypeMaker.TypeTypes
makeTypeTypes(java.lang.String internalTypeName, byte[] data)
private java.lang.Boolean
multipleMethods(java.lang.String internalTypeName, java.lang.String suffixKey)
boolean
multipleMethods(java.lang.String internalTypeName, java.lang.String name, int parameterCount)
TypeMaker.TypeTypes
parseClassFileSignature(ClassFile classFile)
Rules: ClassSignature: TypeParameters? SuperclassSignature SuperInterfaceSignature* SuperclassSignature: ClassTypeSignature SuperInterfaceSignature: ClassTypeSignatureprivate ObjectType
parseClassTypeSignature(TypeMaker.SignatureReader reader, int dimension)
Rules: ClassTypeSignature: 'L' PackageSpecifier* SimpleClassTypeSignature ClassTypeSignatureSuffix* ';' SimpleClassTypeSignature: Identifier TypeArguments? ClassTypeSignatureSuffix: '.' SimpleClassTypeSignatureprivate Type
parseExceptionSignature(TypeMaker.SignatureReader reader)
Rules: ThrowsSignature: '^' ClassTypeSignature | '^' TypeVariableSignatureType
parseFieldSignature(ClassFile classFile, Field field)
private TypeMaker.MethodTypes
parseMethodSignature(java.lang.String signature, java.lang.String[] exceptionTypeNames)
Rules: MethodTypeSignature: TypeParameters? '(' ReferenceTypeSignature* ')' ReturnType ThrowsSignature* ReturnType: TypeSignature | VoidDescriptor ThrowsSignature: '^' ClassTypeSignature | '^' TypeVariableSignatureprivate TypeMaker.MethodTypes
parseMethodSignature(java.lang.String descriptor, java.lang.String signature, java.lang.String[] exceptionTypeNames)
TypeMaker.MethodTypes
parseMethodSignature(ClassFile classFile, Method method)
private TypeMaker.MethodTypes
parseMethodSignature(Method method, java.lang.String key)
private Type
parseReferenceTypeSignature(TypeMaker.SignatureReader reader)
Rules: ReferenceTypeSignature: ClassTypeSignature | ArrayTypeSignature | TypeVariableSignature SimpleClassTypeSignature: Identifier TypeArguments? ArrayTypeSignature: '[' TypeSignature TypeSignature: '[' FieldTypeSignature | '[' BaseType BaseType: 'B' | 'C' | 'D' | 'F' | 'I' | 'J' | 'S' | 'Z' TypeVariableSignature: 'T' Identifier ';'private TypeArgument
parseTypeArgument(TypeMaker.SignatureReader reader)
Rules: TypeArgument: WildcardIndicator? FieldTypeSignature | '*' WildcardIndicator: '+' | '-'private BaseTypeArgument
parseTypeArguments(TypeMaker.SignatureReader reader)
Rules: TypeArguments: '<' TypeArgument+ '>'private TypeParameter
parseTypeParameter(TypeMaker.SignatureReader reader)
Rules: TypeParameter: Identifier ClassBound InterfaceBound* ClassBound: ':' FieldTypeSignature? InterfaceBound: ':' FieldTypeSignatureprivate BaseTypeParameter
parseTypeParameters(TypeMaker.SignatureReader reader)
Rules: TypeParameters: '<' TypeParameter+ '>'private ObjectType
searchSuperParameterizedType(long superHashCode, java.lang.String superInternalTypeName, ObjectType objectType)
ObjectType
searchSuperParameterizedType(ObjectType superObjectType, ObjectType objectType)
private static void
skipAttributes(ClassFileReader reader)
private static void
skipMembers(ClassFileReader reader)
-
-
-
Field Detail
-
INTERNALNAME_TO_OBJECTPRIMITIVETYPE
private static final java.util.HashMap<java.lang.String,ObjectType> INTERNALNAME_TO_OBJECTPRIMITIVETYPE
-
signatureToType
private java.util.HashMap<java.lang.String,Type> signatureToType
-
internalTypeNameFieldNameToType
private java.util.HashMap<java.lang.String,Type> internalTypeNameFieldNameToType
-
descriptorToObjectType
private java.util.HashMap<java.lang.String,ObjectType> descriptorToObjectType
-
internalTypeNameToObjectType
private java.util.HashMap<java.lang.String,ObjectType> internalTypeNameToObjectType
-
internalTypeNameToTypeTypes
private java.util.HashMap<java.lang.String,TypeMaker.TypeTypes> internalTypeNameToTypeTypes
-
internalTypeNameMethodNameParameterCountToBoolean
private java.util.HashMap<java.lang.String,java.lang.Boolean> internalTypeNameMethodNameParameterCountToBoolean
-
internalTypeNameMethodNameDescriptorToMethodTypes
private java.util.HashMap<java.lang.String,TypeMaker.MethodTypes> internalTypeNameMethodNameDescriptorToMethodTypes
-
signatureToMethodTypes
private java.util.HashMap<java.lang.String,TypeMaker.MethodTypes> signatureToMethodTypes
-
assignableRawTypes
private java.util.HashMap<java.lang.Long,java.lang.Boolean> assignableRawTypes
-
superParameterizedObjectTypes
private java.util.HashMap<java.lang.Long,ObjectType> superParameterizedObjectTypes
-
hierarchy
private java.util.HashMap<java.lang.String,java.lang.String[]> hierarchy
-
classPathLoader
private TypeMaker.ClassPathLoader classPathLoader
-
loader
private Loader loader
-
-
Constructor Detail
-
TypeMaker
public TypeMaker(Loader loader)
-
-
Method Detail
-
parseClassFileSignature
public TypeMaker.TypeTypes parseClassFileSignature(ClassFile classFile)
Rules: ClassSignature: TypeParameters? SuperclassSignature SuperInterfaceSignature* SuperclassSignature: ClassTypeSignature SuperInterfaceSignature: ClassTypeSignature
-
parseMethodSignature
public TypeMaker.MethodTypes parseMethodSignature(ClassFile classFile, Method method)
-
parseMethodSignature
private TypeMaker.MethodTypes parseMethodSignature(Method method, java.lang.String key)
-
getExceptionTypeNames
private static java.lang.String[] getExceptionTypeNames(Method method)
-
makeFromSignature
public Type makeFromSignature(java.lang.String signature)
-
countDimension
public static int countDimension(java.lang.String descriptor)
-
parseMethodSignature
private TypeMaker.MethodTypes parseMethodSignature(java.lang.String descriptor, java.lang.String signature, java.lang.String[] exceptionTypeNames)
-
parseMethodSignature
private TypeMaker.MethodTypes parseMethodSignature(java.lang.String signature, java.lang.String[] exceptionTypeNames)
Rules: MethodTypeSignature: TypeParameters? '(' ReferenceTypeSignature* ')' ReturnType ThrowsSignature* ReturnType: TypeSignature | VoidDescriptor ThrowsSignature: '^' ClassTypeSignature | '^' TypeVariableSignature
-
parseTypeParameters
private BaseTypeParameter parseTypeParameters(TypeMaker.SignatureReader reader)
Rules: TypeParameters: '<' TypeParameter+ '>'
-
parseTypeParameter
private TypeParameter parseTypeParameter(TypeMaker.SignatureReader reader)
Rules: TypeParameter: Identifier ClassBound InterfaceBound* ClassBound: ':' FieldTypeSignature? InterfaceBound: ':' FieldTypeSignature
-
parseExceptionSignature
private Type parseExceptionSignature(TypeMaker.SignatureReader reader)
Rules: ThrowsSignature: '^' ClassTypeSignature | '^' TypeVariableSignature
-
parseClassTypeSignature
private ObjectType parseClassTypeSignature(TypeMaker.SignatureReader reader, int dimension)
Rules: ClassTypeSignature: 'L' PackageSpecifier* SimpleClassTypeSignature ClassTypeSignatureSuffix* ';' SimpleClassTypeSignature: Identifier TypeArguments? ClassTypeSignatureSuffix: '.' SimpleClassTypeSignature
-
parseTypeArguments
private BaseTypeArgument parseTypeArguments(TypeMaker.SignatureReader reader)
Rules: TypeArguments: '<' TypeArgument+ '>'
-
parseReferenceTypeSignature
private Type parseReferenceTypeSignature(TypeMaker.SignatureReader reader)
Rules: ReferenceTypeSignature: ClassTypeSignature | ArrayTypeSignature | TypeVariableSignature SimpleClassTypeSignature: Identifier TypeArguments? ArrayTypeSignature: '[' TypeSignature TypeSignature: '[' FieldTypeSignature | '[' BaseType BaseType: 'B' | 'C' | 'D' | 'F' | 'I' | 'J' | 'S' | 'Z' TypeVariableSignature: 'T' Identifier ';'
-
parseTypeArgument
private TypeArgument parseTypeArgument(TypeMaker.SignatureReader reader)
Rules: TypeArgument: WildcardIndicator? FieldTypeSignature | '*' WildcardIndicator: '+' | '-'
-
isAReferenceTypeSignature
private static boolean isAReferenceTypeSignature(TypeMaker.SignatureReader reader)
-
isAClassTypeSignature
private static boolean isAClassTypeSignature(TypeMaker.SignatureReader reader)
-
isATypeArguments
private static boolean isATypeArguments(TypeMaker.SignatureReader reader)
-
isATypeArgument
private static boolean isATypeArgument(TypeMaker.SignatureReader reader)
-
extractLocalClassName
private static java.lang.String extractLocalClassName(java.lang.String name)
-
makeFromDescriptorOrInternalTypeName
public ObjectType makeFromDescriptorOrInternalTypeName(java.lang.String descriptorOrInternalTypeName)
-
makeFromDescriptor
public ObjectType makeFromDescriptor(java.lang.String descriptor)
-
makeFromDescriptorWithoutBracket
private ObjectType makeFromDescriptorWithoutBracket(java.lang.String descriptor)
-
makeFromInternalTypeName
public ObjectType makeFromInternalTypeName(java.lang.String internalTypeName)
-
create
private ObjectType create(java.lang.String internalTypeName)
-
searchSuperParameterizedType
public ObjectType searchSuperParameterizedType(ObjectType superObjectType, ObjectType objectType)
-
isAssignable
public boolean isAssignable(java.util.Map<java.lang.String,BaseType> typeBounds, ObjectType left, ObjectType right)
-
searchSuperParameterizedType
private ObjectType searchSuperParameterizedType(long superHashCode, java.lang.String superInternalTypeName, ObjectType objectType)
-
isRawTypeAssignable
public boolean isRawTypeAssignable(ObjectType left, ObjectType right)
-
isRawTypeAssignable
private boolean isRawTypeAssignable(long leftHashCode, java.lang.String leftInternalName, java.lang.String rightInternalName)
-
makeTypeTypes
public TypeMaker.TypeTypes makeTypeTypes(java.lang.String internalTypeName)
-
makeTypeTypes
private TypeMaker.TypeTypes makeTypeTypes(java.lang.String internalTypeName, byte[] data) throws java.lang.Exception
- Throws:
java.lang.Exception
-
makeFieldType
public Type makeFieldType(java.lang.String internalTypeName, java.lang.String fieldName, java.lang.String descriptor)
-
loadFieldType
private Type loadFieldType(java.lang.String internalTypeName, java.lang.String fieldName, java.lang.String descriptor)
-
loadFieldType
private Type loadFieldType(ObjectType objectType, java.lang.String fieldName, java.lang.String descriptor)
-
makeMethodTypes
public TypeMaker.MethodTypes makeMethodTypes(java.lang.String descriptor)
-
makeMethodTypes
public TypeMaker.MethodTypes makeMethodTypes(java.lang.String internalTypeName, java.lang.String methodName, java.lang.String descriptor)
-
loadMethodTypes
private TypeMaker.MethodTypes loadMethodTypes(java.lang.String internalTypeName, java.lang.String methodName, java.lang.String descriptor)
-
loadMethodTypes
private TypeMaker.MethodTypes loadMethodTypes(ObjectType objectType, java.lang.String methodName, java.lang.String descriptor)
-
loadType
private ObjectType loadType(java.lang.String internalTypeName)
-
loadType
private ObjectType loadType(java.lang.String internalTypeName, byte[] data) throws java.lang.Exception
- Throws:
java.lang.Exception
-
loadFieldsAndMethods
private boolean loadFieldsAndMethods(java.lang.String internalTypeName)
-
loadFieldsAndMethods
private void loadFieldsAndMethods(java.lang.String internalTypeName, byte[] data) throws java.lang.Exception
- Throws:
java.lang.Exception
-
loadClassFile
private java.lang.Object[] loadClassFile(java.lang.String internalTypeName, ClassFileReader reader) throws java.lang.Exception
- Throws:
java.lang.Exception
-
skipMembers
private static void skipMembers(ClassFileReader reader)
-
loadConstants
private java.lang.Object[] loadConstants(ClassFileReader reader) throws java.lang.Exception
- Throws:
java.lang.Exception
-
skipAttributes
private static void skipAttributes(ClassFileReader reader)
-
multipleMethods
public boolean multipleMethods(java.lang.String internalTypeName, java.lang.String name, int parameterCount)
-
multipleMethods
private java.lang.Boolean multipleMethods(java.lang.String internalTypeName, java.lang.String suffixKey)
-
-