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 classTypeMaker.ClassPathLoaderstatic classTypeMaker.MethodTypesprivate static classTypeMaker.SignatureReaderstatic classTypeMaker.TypeTypes
-
Field Summary
Fields Modifier and Type Field Description private java.util.HashMap<java.lang.Long,java.lang.Boolean>assignableRawTypesprivate TypeMaker.ClassPathLoaderclassPathLoaderprivate java.util.HashMap<java.lang.String,ObjectType>descriptorToObjectTypeprivate java.util.HashMap<java.lang.String,java.lang.String[]>hierarchyprivate static java.util.HashMap<java.lang.String,ObjectType>INTERNALNAME_TO_OBJECTPRIMITIVETYPEprivate java.util.HashMap<java.lang.String,Type>internalTypeNameFieldNameToTypeprivate java.util.HashMap<java.lang.String,TypeMaker.MethodTypes>internalTypeNameMethodNameDescriptorToMethodTypesprivate java.util.HashMap<java.lang.String,java.lang.Boolean>internalTypeNameMethodNameParameterCountToBooleanprivate java.util.HashMap<java.lang.String,ObjectType>internalTypeNameToObjectTypeprivate java.util.HashMap<java.lang.String,TypeMaker.TypeTypes>internalTypeNameToTypeTypesprivate Loaderloaderprivate java.util.HashMap<java.lang.String,TypeMaker.MethodTypes>signatureToMethodTypesprivate java.util.HashMap<java.lang.String,Type>signatureToTypeprivate java.util.HashMap<java.lang.Long,ObjectType>superParameterizedObjectTypes
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static intcountDimension(java.lang.String descriptor)private ObjectTypecreate(java.lang.String internalTypeName)private static java.lang.StringextractLocalClassName(java.lang.String name)private static java.lang.String[]getExceptionTypeNames(Method method)private static booleanisAClassTypeSignature(TypeMaker.SignatureReader reader)private static booleanisAReferenceTypeSignature(TypeMaker.SignatureReader reader)booleanisAssignable(java.util.Map<java.lang.String,BaseType> typeBounds, ObjectType left, ObjectType right)private static booleanisATypeArgument(TypeMaker.SignatureReader reader)private static booleanisATypeArguments(TypeMaker.SignatureReader reader)private booleanisRawTypeAssignable(long leftHashCode, java.lang.String leftInternalName, java.lang.String rightInternalName)booleanisRawTypeAssignable(ObjectType left, ObjectType right)private java.lang.Object[]loadClassFile(java.lang.String internalTypeName, ClassFileReader reader)private java.lang.Object[]loadConstants(ClassFileReader reader)private booleanloadFieldsAndMethods(java.lang.String internalTypeName)private voidloadFieldsAndMethods(java.lang.String internalTypeName, byte[] data)private TypeloadFieldType(java.lang.String internalTypeName, java.lang.String fieldName, java.lang.String descriptor)private TypeloadFieldType(ObjectType objectType, java.lang.String fieldName, java.lang.String descriptor)private TypeMaker.MethodTypesloadMethodTypes(java.lang.String internalTypeName, java.lang.String methodName, java.lang.String descriptor)private TypeMaker.MethodTypesloadMethodTypes(ObjectType objectType, java.lang.String methodName, java.lang.String descriptor)private ObjectTypeloadType(java.lang.String internalTypeName)private ObjectTypeloadType(java.lang.String internalTypeName, byte[] data)TypemakeFieldType(java.lang.String internalTypeName, java.lang.String fieldName, java.lang.String descriptor)ObjectTypemakeFromDescriptor(java.lang.String descriptor)ObjectTypemakeFromDescriptorOrInternalTypeName(java.lang.String descriptorOrInternalTypeName)private ObjectTypemakeFromDescriptorWithoutBracket(java.lang.String descriptor)ObjectTypemakeFromInternalTypeName(java.lang.String internalTypeName)TypemakeFromSignature(java.lang.String signature)TypeMaker.MethodTypesmakeMethodTypes(java.lang.String descriptor)TypeMaker.MethodTypesmakeMethodTypes(java.lang.String internalTypeName, java.lang.String methodName, java.lang.String descriptor)TypeMaker.TypeTypesmakeTypeTypes(java.lang.String internalTypeName)private TypeMaker.TypeTypesmakeTypeTypes(java.lang.String internalTypeName, byte[] data)private java.lang.BooleanmultipleMethods(java.lang.String internalTypeName, java.lang.String suffixKey)booleanmultipleMethods(java.lang.String internalTypeName, java.lang.String name, int parameterCount)TypeMaker.TypeTypesparseClassFileSignature(ClassFile classFile)Rules: ClassSignature: TypeParameters? SuperclassSignature SuperInterfaceSignature* SuperclassSignature: ClassTypeSignature SuperInterfaceSignature: ClassTypeSignatureprivate ObjectTypeparseClassTypeSignature(TypeMaker.SignatureReader reader, int dimension)Rules: ClassTypeSignature: 'L' PackageSpecifier* SimpleClassTypeSignature ClassTypeSignatureSuffix* ';' SimpleClassTypeSignature: Identifier TypeArguments? ClassTypeSignatureSuffix: '.' SimpleClassTypeSignatureprivate TypeparseExceptionSignature(TypeMaker.SignatureReader reader)Rules: ThrowsSignature: '^' ClassTypeSignature | '^' TypeVariableSignatureTypeparseFieldSignature(ClassFile classFile, Field field)private TypeMaker.MethodTypesparseMethodSignature(java.lang.String signature, java.lang.String[] exceptionTypeNames)Rules: MethodTypeSignature: TypeParameters? '(' ReferenceTypeSignature* ')' ReturnType ThrowsSignature* ReturnType: TypeSignature | VoidDescriptor ThrowsSignature: '^' ClassTypeSignature | '^' TypeVariableSignatureprivate TypeMaker.MethodTypesparseMethodSignature(java.lang.String descriptor, java.lang.String signature, java.lang.String[] exceptionTypeNames)TypeMaker.MethodTypesparseMethodSignature(ClassFile classFile, Method method)private TypeMaker.MethodTypesparseMethodSignature(Method method, java.lang.String key)private TypeparseReferenceTypeSignature(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 TypeArgumentparseTypeArgument(TypeMaker.SignatureReader reader)Rules: TypeArgument: WildcardIndicator? FieldTypeSignature | '*' WildcardIndicator: '+' | '-'private BaseTypeArgumentparseTypeArguments(TypeMaker.SignatureReader reader)Rules: TypeArguments: '<' TypeArgument+ '>'private TypeParameterparseTypeParameter(TypeMaker.SignatureReader reader)Rules: TypeParameter: Identifier ClassBound InterfaceBound* ClassBound: ':' FieldTypeSignature? InterfaceBound: ':' FieldTypeSignatureprivate BaseTypeParameterparseTypeParameters(TypeMaker.SignatureReader reader)Rules: TypeParameters: '<' TypeParameter+ '>'private ObjectTypesearchSuperParameterizedType(long superHashCode, java.lang.String superInternalTypeName, ObjectType objectType)ObjectTypesearchSuperParameterizedType(ObjectType superObjectType, ObjectType objectType)private static voidskipAttributes(ClassFileReader reader)private static voidskipMembers(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)
-
-