Class TypeResolver


  • public class TypeResolver
    extends java.lang.Object
    A per JavaClass resolver of types
    Since:
    2.0
    • Field Detail

      • PRIMITIVE_TYPES

        private static final java.util.Set<java.lang.String> PRIMITIVE_TYPES
      • resolvedTypeCache

        private final java.util.Map<java.lang.String,​java.lang.String> resolvedTypeCache
      • pckg

        private final java.lang.String pckg
      • declaringClass

        private final java.lang.String declaringClass
      • imports

        private final java.util.Collection<java.lang.String> imports
    • Constructor Detail

      • TypeResolver

        private TypeResolver​(java.lang.String pckg,
                             java.lang.String declaringClass,
                             ClassLibrary classLibrary,
                             java.util.Collection<java.lang.String> imports)
    • Method Detail

      • byPackageName

        public static TypeResolver byPackageName​(java.lang.String binaryName,
                                                 ClassLibrary classLibrary,
                                                 java.util.Collection<java.lang.String> imports)
        Type resolver in case there's no declaring class, e.g. using extends, implements and annotations on a toplevel class
        Parameters:
        binaryName - the binary name of the package
        classLibrary - the class library
        imports - the imports, can be null
        Returns:
        the typeResolver
      • byClassName

        public static TypeResolver byClassName​(java.lang.String binaryName,
                                               ClassLibrary classLibrary,
                                               java.util.Collection<java.lang.String> imports)
        Parameters:
        binaryName - the class in which context a type is used.
        classLibrary - the class library
        imports - the imports, can be null
        Returns:
        the typeResolver
      • resolveJavaClass

        public JavaClass resolveJavaClass​(java.lang.String typeName)
      • getJavaClass

        public JavaClass getJavaClass​(java.lang.String binaryName)
      • resolveType

        public java.lang.String resolveType​(java.lang.String typeName)
      • resolveTypeInternal

        private java.lang.String resolveTypeInternal​(java.lang.String typeName)
        Resolves a type name

        Follows the Java Language Specification, Version 3.0.

        Current resolution order is:

        1. Single-Type-Import Declaration
        2. Type-Import-on-Demand Declaration
        3. Automatic Imports
        Parameters:
        typeName - the name to resolve
        Returns:
        the resolved type name, otherwise null
      • resolveImportedType

        private java.lang.String resolveImportedType​(java.lang.String importSpec,
                                                     java.lang.String typeName,
                                                     boolean fullMatch)
      • resolveFromLibrary

        private java.lang.String resolveFromLibrary​(java.lang.String typeName)
      • resolveFullyQualifiedType

        private java.lang.String resolveFullyQualifiedType​(java.lang.String typeName)