Package com.sun.tools.xjc.model.nav
Class NavigatorImpl
- java.lang.Object
-
- com.sun.tools.xjc.model.nav.NavigatorImpl
-
public final class NavigatorImpl extends java.lang.Object implements Navigator<NType,NClass,java.lang.Void,java.lang.Void>
Navigatorimplementation for XJC. Most of the Navigator methods are used for parsing the model, which doesn't happen in XJC. So Most of the methods aren't really implemented. Implementations should be filled in as needed.- Author:
- Kohsuke Kawaguchi
-
-
Field Summary
Fields Modifier and Type Field Description static NavigatorImpltheInstance
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description NClassasDecl(NType nt)If the given type is an use of class declaration, returns the type casted asC.NClassasDecl(java.lang.Class c)Gets theCrepresentation for the given class.static NClasscreate(java.lang.Class c)static NTypecreate(java.lang.reflect.Type t)static NTypecreateParameterizedType(NClass rawType, NType... args)Creates aNTyperepresentation for a parameterized typeRawType<ParamType1,ParamType2,...>.static NTypecreateParameterizedType(java.lang.Class rawType, NType... args)<T> NTypeerasure(NType type)Computes the erasureNTypegetBaseClass(NType nt, NClass base)Gets the parameterization of the given base type.LocationgetClassLocation(NClass c)Returns a location of the specified class.java.lang.StringgetClassName(NClass nClass)Gets the fully-qualified name of the class.java.lang.StringgetClassShortName(NClass nClass)Gets the short name of the class ("Object" forObject.) For nested classes, this method should just return the inner name.NTypegetComponentType(NType nType)Gets the component type of the array.java.lang.VoidgetDeclaredField(NClass clazz, java.lang.String fieldName)Gets the named field declared on the given class.java.util.Collection<? extends java.lang.Void>getDeclaredFields(NClass nClass)Gets all the declared fields of the given class.java.util.Collection<? extends java.lang.Void>getDeclaredMethods(NClass nClass)Gets all the declared methods of the given class (regardless of their access modifiers, regardless of whether they override methods of the base classes.)NClassgetDeclaringClassForField(java.lang.Void aVoid)Gets the class that declares the given field.NClassgetDeclaringClassForMethod(java.lang.Void aVoid)Gets the class that declares the given method.java.lang.Void[]getEnumConstants(NClass clazz)Gets the enumeration constants from an enum class.LocationgetFieldLocation(java.lang.Void v)java.lang.StringgetFieldName(java.lang.Void aVoid)Gets the name of the field.NTypegetFieldType(java.lang.Void aVoid)Gets the type of the field.LocationgetMethodLocation(java.lang.Void v)java.lang.StringgetMethodName(java.lang.Void aVoid)Gets the name of the method, such as "toString" or "equals".NType[]getMethodParameters(java.lang.Void aVoid)Returns the list of parameters to the method.java.lang.StringgetPackageName(NClass clazz)Gets the package name of the given class.NTypegetPrimitive(java.lang.Class primitiveType)Returns the representation for the given primitive type.NTypegetReturnType(java.lang.Void aVoid)Gets the return type of a method.NClassgetSuperClass(NClass nClass)Gets the base class of the specified class.NTypegetTypeArgument(NType nt, int i)Gets the i-th type argument from a parameterized type.java.lang.StringgetTypeName(NType type)Gets the display name of the type objectNTypegetVoidType()Gets the representation of the primitive "void" type.booleanhasDefaultConstructor(NClass nClass)Returns true if the given class has a no-arg default constructor.booleanisAbstract(NClass clazz)Returns true if this is an abstract class.booleanisArray(NType nType)Checks if the type is an array type.booleanisArrayButNotByteArray(NType t)Checks if the type is an array type but not byte[].booleanisBridgeMethod(java.lang.Void method)Returns true if this method is a bridge method as defined in JLS.booleanisEnum(NClass c)Returns true if this is an enum class.booleanisFinal(NClass clazz)Deprecated.no class generated by XJC is final.booleanisFinalMethod(java.lang.Void aVoid)Returns true if the method is final.booleanisInnerClass(NClass clazz)Returns true if the given class is an inner class.booleanisInterface(NClass clazz)Returns true if 'clazz' is an interface.booleanisOverriding(java.lang.Void method, NClass clazz)Returns true if the given method is overriding another one defined in the base class 'base' or its ancestors.booleanisParameterizedType(NType nt)Returns true if t is a parameterized type.booleanisPrimitive(NType type)Checks if the given type is a primitive type.booleanisPublicField(java.lang.Void aVoid)Returns true if the field is public.booleanisPublicMethod(java.lang.Void aVoid)Returns true if the method is public.booleanisSameType(NType t1, NType t2)Checks if types are the samebooleanisStaticField(java.lang.Void aVoid)Returns true if the field is static.booleanisStaticMethod(java.lang.Void aVoid)Returns true if the method is static.booleanisSubClassOf(NType sub, NType sup)Checks ifsubis a sub-type ofsup.booleanisTransient(java.lang.Void f)Returns true if the field is transient.NClassloadObjectFactory(NClass referencePoint, java.lang.String pkg)Finds ObjectFactory for the given referencePoint.NClassref(JClass c)NClassref(java.lang.Class c)Gets the representation of the given Java type inT.NTypeuse(NClass nc)Gets the T for the given C.
-
-
-
Field Detail
-
theInstance
public static final NavigatorImpl theInstance
-
-
Method Detail
-
getSuperClass
public NClass getSuperClass(NClass nClass)
Description copied from interface:NavigatorGets the base class of the specified class.- Specified by:
getSuperClassin interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>- Returns:
- null if the parameter represents
Object.
-
getBaseClass
public NType getBaseClass(NType nt, NClass base)
Description copied from interface:NavigatorGets the parameterization of the given base type.For example, given the following
This method works like this:interface Foo<T> extends List<List<T>> {} interface Bar extends Foo<String> {}getBaseClass( Bar, List ) = List<List<String>> getBaseClass( Bar, Foo ) = Foo<String> getBaseClass( Foo<? extends Number>, Collection ) = Collection<List<? extends Number>> getBaseClass( ArrayList<? extends BigInteger>, List ) = List<? extends BigInteger>- Specified by:
getBaseClassin interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>- Parameters:
nt- The type that derives frombaseTypebase- The class whose parameterization we are interested in.- Returns:
- The use of
baseTypeintype. or null if the type is not assignable to the base type.
-
getClassName
public java.lang.String getClassName(NClass nClass)
Description copied from interface:NavigatorGets the fully-qualified name of the class. ("java.lang.Object" forObject)- Specified by:
getClassNamein interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>
-
getTypeName
public java.lang.String getTypeName(NType type)
Description copied from interface:NavigatorGets the display name of the type object- Specified by:
getTypeNamein interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>- Returns:
- a human-readable name that the type represents.
-
getClassShortName
public java.lang.String getClassShortName(NClass nClass)
Description copied from interface:NavigatorGets the short name of the class ("Object" forObject.) For nested classes, this method should just return the inner name. (for example "Inner" for "com.acme.Outer$Inner".- Specified by:
getClassShortNamein interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>
-
getDeclaredFields
public java.util.Collection<? extends java.lang.Void> getDeclaredFields(NClass nClass)
Description copied from interface:NavigatorGets all the declared fields of the given class.- Specified by:
getDeclaredFieldsin interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>
-
getDeclaredField
public java.lang.Void getDeclaredField(NClass clazz, java.lang.String fieldName)
Description copied from interface:NavigatorGets the named field declared on the given class. This method doesn't visit ancestors, but does recognize non-public fields.- Specified by:
getDeclaredFieldin interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>- Returns:
- null if not found
-
getDeclaredMethods
public java.util.Collection<? extends java.lang.Void> getDeclaredMethods(NClass nClass)
Description copied from interface:NavigatorGets all the declared methods of the given class (regardless of their access modifiers, regardless of whether they override methods of the base classes.)Note that this method does not list methods declared on base classes.
- Specified by:
getDeclaredMethodsin interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>- Returns:
- can be empty but always non-null.
-
getDeclaringClassForField
public NClass getDeclaringClassForField(java.lang.Void aVoid)
Description copied from interface:NavigatorGets the class that declares the given field.- Specified by:
getDeclaringClassForFieldin interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>
-
getDeclaringClassForMethod
public NClass getDeclaringClassForMethod(java.lang.Void aVoid)
Description copied from interface:NavigatorGets the class that declares the given method.- Specified by:
getDeclaringClassForMethodin interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>
-
getFieldType
public NType getFieldType(java.lang.Void aVoid)
Description copied from interface:NavigatorGets the type of the field.- Specified by:
getFieldTypein interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>
-
getFieldName
public java.lang.String getFieldName(java.lang.Void aVoid)
Description copied from interface:NavigatorGets the name of the field.- Specified by:
getFieldNamein interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>
-
getMethodName
public java.lang.String getMethodName(java.lang.Void aVoid)
Description copied from interface:NavigatorGets the name of the method, such as "toString" or "equals".- Specified by:
getMethodNamein interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>
-
getReturnType
public NType getReturnType(java.lang.Void aVoid)
Description copied from interface:NavigatorGets the return type of a method.- Specified by:
getReturnTypein interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>
-
getMethodParameters
public NType[] getMethodParameters(java.lang.Void aVoid)
Description copied from interface:NavigatorReturns the list of parameters to the method.- Specified by:
getMethodParametersin interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>
-
isStaticMethod
public boolean isStaticMethod(java.lang.Void aVoid)
Description copied from interface:NavigatorReturns true if the method is static.- Specified by:
isStaticMethodin interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>
-
isFinalMethod
public boolean isFinalMethod(java.lang.Void aVoid)
Description copied from interface:NavigatorReturns true if the method is final.- Specified by:
isFinalMethodin interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>
-
isSubClassOf
public boolean isSubClassOf(NType sub, NType sup)
Description copied from interface:NavigatorChecks ifsubis a sub-type ofsup. TODO: should this method take T or C?- Specified by:
isSubClassOfin interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>
-
ref
public NClass ref(java.lang.Class c)
Description copied from interface:NavigatorGets the representation of the given Java type inT.
-
use
public NType use(NClass nc)
Description copied from interface:NavigatorGets the T for the given C.
-
asDecl
public NClass asDecl(NType nt)
Description copied from interface:NavigatorIf the given type is an use of class declaration, returns the type casted asC. Otherwise null.TODO: define the exact semantics.
-
asDecl
public NClass asDecl(java.lang.Class c)
Description copied from interface:NavigatorGets theCrepresentation for the given class. The behavior is undefined if the class object represents primitives, arrays, and other types that are not class declaration.
-
isArray
public boolean isArray(NType nType)
Description copied from interface:NavigatorChecks if the type is an array type.
-
isArrayButNotByteArray
public boolean isArrayButNotByteArray(NType t)
Description copied from interface:NavigatorChecks if the type is an array type but not byte[].- Specified by:
isArrayButNotByteArrayin interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>
-
getComponentType
public NType getComponentType(NType nType)
Description copied from interface:NavigatorGets the component type of the array.- Specified by:
getComponentTypein interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>- Parameters:
nType- must be an array.
-
getTypeArgument
public NType getTypeArgument(NType nt, int i)
Description copied from interface:NavigatorGets the i-th type argument from a parameterized type. For example,getTypeArgument([Map<Integer,String>],0)=Integer- Specified by:
getTypeArgumentin interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>- See Also:
Navigator.isParameterizedType(Object)
-
isParameterizedType
public boolean isParameterizedType(NType nt)
Description copied from interface:NavigatorReturns true if t is a parameterized type.- Specified by:
isParameterizedTypein interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>
-
isPrimitive
public boolean isPrimitive(NType type)
Description copied from interface:NavigatorChecks if the given type is a primitive type.- Specified by:
isPrimitivein interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>
-
getPrimitive
public NType getPrimitive(java.lang.Class primitiveType)
Description copied from interface:NavigatorReturns the representation for the given primitive type.- Specified by:
getPrimitivein interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>- Parameters:
primitiveType- must be Class objects likeInteger.TYPE.
-
create
public static final NType create(java.lang.reflect.Type t)
-
create
public static NClass create(java.lang.Class c)
-
createParameterizedType
public static NType createParameterizedType(NClass rawType, NType... args)
Creates aNTyperepresentation for a parameterized typeRawType<ParamType1,ParamType2,...>.
-
createParameterizedType
public static NType createParameterizedType(java.lang.Class rawType, NType... args)
-
getClassLocation
public Location getClassLocation(NClass c)
Description copied from interface:NavigatorReturns a location of the specified class.- Specified by:
getClassLocationin interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>
-
getFieldLocation
public Location getFieldLocation(java.lang.Void v)
- Specified by:
getFieldLocationin interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>
-
getMethodLocation
public Location getMethodLocation(java.lang.Void v)
- Specified by:
getMethodLocationin interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>
-
hasDefaultConstructor
public boolean hasDefaultConstructor(NClass nClass)
Description copied from interface:NavigatorReturns true if the given class has a no-arg default constructor. The constructor does not need to be public.- Specified by:
hasDefaultConstructorin interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>
-
isStaticField
public boolean isStaticField(java.lang.Void aVoid)
Description copied from interface:NavigatorReturns true if the field is static.- Specified by:
isStaticFieldin interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>
-
isPublicMethod
public boolean isPublicMethod(java.lang.Void aVoid)
Description copied from interface:NavigatorReturns true if the method is public.- Specified by:
isPublicMethodin interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>
-
isPublicField
public boolean isPublicField(java.lang.Void aVoid)
Description copied from interface:NavigatorReturns true if the field is public.- Specified by:
isPublicFieldin interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>
-
isEnum
public boolean isEnum(NClass c)
Description copied from interface:NavigatorReturns true if this is an enum class.
-
erasure
public <T> NType erasure(NType type)
Description copied from interface:NavigatorComputes the erasure
-
isAbstract
public boolean isAbstract(NClass clazz)
Description copied from interface:NavigatorReturns true if this is an abstract class.- Specified by:
isAbstractin interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>
-
isFinal
public boolean isFinal(NClass clazz)
Deprecated.no class generated by XJC is final.Description copied from interface:NavigatorReturns true if this is a final class.
-
getEnumConstants
public java.lang.Void[] getEnumConstants(NClass clazz)
Description copied from interface:NavigatorGets the enumeration constants from an enum class.- Specified by:
getEnumConstantsin interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>- Parameters:
clazz- must derive fromEnum.- Returns:
- can be empty but never null.
-
getVoidType
public NType getVoidType()
Description copied from interface:NavigatorGets the representation of the primitive "void" type.- Specified by:
getVoidTypein interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>
-
getPackageName
public java.lang.String getPackageName(NClass clazz)
Description copied from interface:NavigatorGets the package name of the given class.- Specified by:
getPackageNamein interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>- Returns:
- i.e. "", "java.lang" but not null.
-
loadObjectFactory
public NClass loadObjectFactory(NClass referencePoint, java.lang.String pkg)
Description copied from interface:NavigatorFinds ObjectFactory for the given referencePoint.- Specified by:
loadObjectFactoryin interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>- Parameters:
referencePoint- The class that refers to the specified class.- Returns:
- null if not found.
-
isBridgeMethod
public boolean isBridgeMethod(java.lang.Void method)
Description copied from interface:NavigatorReturns true if this method is a bridge method as defined in JLS.- Specified by:
isBridgeMethodin interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>
-
isOverriding
public boolean isOverriding(java.lang.Void method, NClass clazz)Description copied from interface:NavigatorReturns true if the given method is overriding another one defined in the base class 'base' or its ancestors.- Specified by:
isOverridingin interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>
-
isInterface
public boolean isInterface(NClass clazz)
Description copied from interface:NavigatorReturns true if 'clazz' is an interface.- Specified by:
isInterfacein interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>
-
isTransient
public boolean isTransient(java.lang.Void f)
Description copied from interface:NavigatorReturns true if the field is transient.- Specified by:
isTransientin interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>
-
isInnerClass
public boolean isInnerClass(NClass clazz)
Description copied from interface:NavigatorReturns true if the given class is an inner class. This is only used to improve the error diagnostics, so it's OK to fail to detect some inner classes as such. Note that this method should return false for nested classes (static classes.)- Specified by:
isInnerClassin interfaceNavigator<NType,NClass,java.lang.Void,java.lang.Void>
-
-