GWT 2.7.0

com.google.gwt.core.ext.typeinfo
Class TypeOracle

java.lang.Object
  extended by com.google.gwt.core.ext.typeinfo.TypeOracle

public abstract class TypeOracle
extends java.lang.Object

Provides type-related information about a set of source files.

All type objects exposed, such as JClassType and others, have a stable identity relative to this type oracle instance. Consequently, you can reliably compare object identity of any objects this type oracle produces. For example, the following code relies on this stable identity guarantee:

 JClassType o = typeOracle.getJavaLangObject();
 JClassType s1 = typeOracle.getType("java.lang.String");
 JClassType s2 = typeOracle.getType("java.lang.String");
 assert (s1 == s2);
 assert (o == s1.getSuperclass());
 JParameterizedType ls = typeOracle.parse("java.util.List<java.lang.String>");
 assert (ls.getTypeArgs()[0] == s1);
 


Field Summary
static java.lang.String TAG_TYPEARGS
          Deprecated. gwt.typeArgs is not longer supported
 
Constructor Summary
TypeOracle()
           
 
Method Summary
abstract  JPackage findPackage(java.lang.String pkgName)
          Attempts to find a package by name.
abstract  JClassType findType(java.lang.String name)
          Finds a class or interface given its fully-qualified name.
abstract  JClassType findType(java.lang.String pkgName, java.lang.String typeName)
          Finds a type given its package-relative name.
abstract  JArrayType getArrayType(JType componentType)
          Gets the type object that represents an array of the specified type.
abstract  JClassType getJavaLangObject()
          Gets a reference to the type object representing java.lang.Object.
abstract  JPackage getOrCreatePackage(java.lang.String name)
          Ensure that a package with the specified name exists as well as its parent packages.
abstract  JPackage getPackage(java.lang.String pkgName)
          Gets a package by name.
abstract  JPackage[] getPackages()
          Gets an array of all packages known to this type oracle.
abstract  JParameterizedType getParameterizedType(JGenericType genericType, JClassType[] typeArgs)
          Gets the parameterized type object that represents the combination of a specified raw type and a set of type arguments.
abstract  JParameterizedType getParameterizedType(JGenericType genericType, JClassType enclosingType, JClassType[] typeArgs)
          Gets the parameterized type object that represents the combination of a specified raw type and a set of type arguments.
abstract  long getReloadCount()
          Deprecated. This method will always return 0 because a TypeOracle never gets reloaded anymore. Callers should not rely on this value to manage static state.
abstract  JClassType getSingleJsoImpl(JClassType intf)
          Returns the single implementation type for an interface returned via getSingleJsoImplInterfaces() or null if no JSO implementation is defined.
abstract  java.util.Set<? extends JClassType> getSingleJsoImplInterfaces()
          Returns an unmodifiable, live view of all interface types that are implemented by exactly one JSO subtype.
abstract  JClassType getType(java.lang.String name)
          Finds a type given its fully qualified name.
abstract  JClassType getType(java.lang.String pkgName, java.lang.String topLevelTypeSimpleName)
          Finds a type given its package-relative name.
abstract  JClassType[] getTypes()
          Gets all types, both top-level and nested.
abstract  JWildcardType getWildcardType(JWildcardType.BoundType boundType, JClassType typeBound)
           
abstract  JType parse(java.lang.String type)
          Parses the string form of a type to produce the corresponding type object.
static void sort(JClassType[] types)
          Convenience method to sort class types in a consistent way.
static void sort(JConstructor[] ctors)
          Convenience method to sort constructors in a consistent way.
static void sort(JField[] fields)
          Convenience method to sort fields in a consistent way.
static void sort(JMethod[] methods)
          Convenience method to sort methods in a consistent way.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

TAG_TYPEARGS

@Deprecated
public static final java.lang.String TAG_TYPEARGS
Deprecated. gwt.typeArgs is not longer supported
A reserved metadata tag to indicates that a field type, method return type or method parameter type is intended to be parameterized. Note that constructor type parameters are not supported at present.

See Also:
Constant Field Values
Constructor Detail

TypeOracle

public TypeOracle()
Method Detail

sort

public static void sort(JClassType[] types)
Convenience method to sort class types in a consistent way. Note that the order is subject to change and is intended to generate an "aesthetically pleasing" order rather than a computationally reliable order.


sort

public static void sort(JConstructor[] ctors)
Convenience method to sort constructors in a consistent way. Note that the order is subject to change and is intended to generate an "aesthetically pleasing" order rather than a computationally reliable order.


sort

public static void sort(JField[] fields)
Convenience method to sort fields in a consistent way. Note that the order is subject to change and is intended to generate an "aesthetically pleasing" order rather than a computationally reliable order.


sort

public static void sort(JMethod[] methods)
Convenience method to sort methods in a consistent way. Note that the order is subject to change and is intended to generate an "aesthetically pleasing" order rather than a computationally reliable order.


findPackage

public abstract JPackage findPackage(java.lang.String pkgName)
Attempts to find a package by name. All requests for the same package return the same package object.

Returns:
null if the package could not be found

findType

public abstract JClassType findType(java.lang.String name)
Finds a class or interface given its fully-qualified name.

Parameters:
name - fully-qualified class/interface name - for nested classes, use its source name rather than its binary name (that is, use a "." rather than a "$")
Returns:
null if the type is not found

findType

public abstract JClassType findType(java.lang.String pkgName,
                                    java.lang.String typeName)
Finds a type given its package-relative name. For nested classes, use its source name rather than its binary name (that is, use a "." rather than a "$").

Returns:
null if the type is not found

getArrayType

public abstract JArrayType getArrayType(JType componentType)
Gets the type object that represents an array of the specified type. The returned type always has a stable identity so as to guarantee that all calls to this method with the same argument return the same object.

Parameters:
componentType - the component type of the array, which can itself be an array type
Returns:
a type object representing an array of the component type

getJavaLangObject

public abstract JClassType getJavaLangObject()
Gets a reference to the type object representing java.lang.Object.


getOrCreatePackage

public abstract JPackage getOrCreatePackage(java.lang.String name)
Ensure that a package with the specified name exists as well as its parent packages.


getPackage

public abstract JPackage getPackage(java.lang.String pkgName)
                             throws NotFoundException
Gets a package by name. All requests for the same package return the same package object.

Returns:
the package object associated with the specified name
Throws:
NotFoundException - if getOrCreatePackage hasn't been called for this package or any child packages

getPackages

public abstract JPackage[] getPackages()
Gets an array of all packages known to this type oracle.

Returns:
an array of packages, possibly of zero-length

getParameterizedType

public abstract JParameterizedType getParameterizedType(JGenericType genericType,
                                                        JClassType enclosingType,
                                                        JClassType[] typeArgs)
Gets the parameterized type object that represents the combination of a specified raw type and a set of type arguments. The returned type always has a stable identity so as to guarantee that all calls to this method with the same arguments return the same object.

Parameters:
genericType - a generic base class
enclosingType -
typeArgs - the type arguments bound to the specified generic type
Returns:
a type object representing this particular binding of type arguments to the specified generic
Throws:
java.lang.IllegalArgumentException - if the parameterization of a non-static member type does not specify an enclosing type or if not enough arguments were specified to parameterize the generic type
java.lang.NullPointerException - if genericType is null

getParameterizedType

public abstract JParameterizedType getParameterizedType(JGenericType genericType,
                                                        JClassType[] typeArgs)
Gets the parameterized type object that represents the combination of a specified raw type and a set of type arguments. The returned type always has a stable identity so as to guarantee that all calls to this method with the same arguments return the same object.

Parameters:
genericType - a generic base class
typeArgs - the type arguments bound to the specified generic type
Returns:
a type object representing this particular binding of type arguments to the specified generic
Throws:
java.lang.IllegalArgumentException - if the generic type is a non-static member type or if not enough arguments were specified to parameterize the generic type
java.lang.NullPointerException - if genericType is null

getReloadCount

@Deprecated
public abstract long getReloadCount()
Deprecated. This method will always return 0 because a TypeOracle never gets reloaded anymore. Callers should not rely on this value to manage static state.


getSingleJsoImpl

public abstract JClassType getSingleJsoImpl(JClassType intf)
Returns the single implementation type for an interface returned via getSingleJsoImplInterfaces() or null if no JSO implementation is defined.


getSingleJsoImplInterfaces

public abstract java.util.Set<? extends JClassType> getSingleJsoImplInterfaces()
Returns an unmodifiable, live view of all interface types that are implemented by exactly one JSO subtype.


getType

public abstract JClassType getType(java.lang.String name)
                            throws NotFoundException
Finds a type given its fully qualified name. For nested classes, use its source name rather than its binary name (that is, use a "." rather than a "$").

Returns:
the specified type
Throws:
NotFoundException

getType

public abstract JClassType getType(java.lang.String pkgName,
                                   java.lang.String topLevelTypeSimpleName)
                            throws NotFoundException
Finds a type given its package-relative name. For nested classes, use its source name rather than its binary name (that is, use a "." rather than a "$").

Returns:
the specified type
Throws:
NotFoundException

getTypes

public abstract JClassType[] getTypes()
Gets all types, both top-level and nested.

Returns:
an array of types, possibly of zero length

getWildcardType

public abstract JWildcardType getWildcardType(JWildcardType.BoundType boundType,
                                              JClassType typeBound)

parse

public abstract JType parse(java.lang.String type)
                     throws TypeOracleException
Parses the string form of a type to produce the corresponding type object. The types that can be parsed include primitives, class and interface names, simple parameterized types (those without wildcards or bounds), and arrays of the preceding.

Examples of types that can be parsed by this method.

Parameters:
type - a type signature to be parsed
Returns:
the type object corresponding to the parse type
Throws:
TypeOracleException

GWT 2.7.0