public interface JavaProvider2 extends JavaProvider
Modifier and Type | Method and Description |
---|---|
JavaClass |
getClassByVMNameInterruptibly(java.lang.String fqVmName)
Fetch the
JavaClass for the specified fully-qualified
type name in VM notation. |
JavaClass |
getClassInterruptibly(java.lang.String fqName)
Fetch the
JavaClass for the given fully-qualified type
name in dotted notation. |
JavaClass |
getClassInterruptibly(java.lang.String fqPrefix,
java.lang.String name)
Fetch the
JavaClass for the given qualified class. |
SourceClass |
getSourceClassInterruptibly(java.lang.String fqName)
Fetch the
SourceClass for the fully-qualified class
name. |
getArrayType, getClass, getClass, getClassByVMName, getPackage, getSourceClass, getTextBuffer
JavaClass getClassInterruptibly(java.lang.String fqName) throws java.lang.InterruptedException
JavaClass
for the given fully-qualified type
name in dotted notation. The type may denote a primitive type, or
a class type.
If the qualified name specified represents a primitive type, then
the implementer is required to return the canonical
PrimitiveType
instance. PrimitiveType
is
in the "common" subpackage and implementers can get the correct one
by calling CommonUtilities.getPrimitiveType( String )
.
If the qualified name specified represents a class type, the implementation has the choice of fetching the class information from either a Java class (*.class) or source (*.java) file. The choice is given to implementations for performance reasons, though implementations are required to provide up-to-date information.
For class types, implementations are required to perform left-to-right class resolution.
Although implementations are not required to return the same
JavaClass
instance each time, they are encouraged to
do so as it will dramatically improve performance.
fqName
- the fully-qualified type name in dotted notation, such
as "java.lang.Object" or "java.util.Map.Entry"java.lang.InterruptedException
- if the task was interruptedJavaClass getClassInterruptibly(java.lang.String fqPrefix, java.lang.String name) throws java.lang.InterruptedException
JavaClass
for the given qualified class.
This is similar to getClass( String fqName )
except
that it splits out the fully-qualified prefix and class name
for convenience.
Implementations can concatenate the fqPrefix and name together
and just rely on the getClass( String fqName )
method.
fqPrefix
- the fully-qualified prefixname
- the name of the classjava.lang.InterruptedException
- if the task was interruptedJavaClass getClassByVMNameInterruptibly(java.lang.String fqVmName) throws java.lang.InterruptedException
JavaClass
for the specified fully-qualified
type name in VM notation. The type may denote an array type,
a primitive type, or a class type.
If the qualified name specified represents an array type, the
implementer should fetch the JavaClass
for the
underlying class first, then generate an array type for the
class using getArrayType( class, dimensions )
.
If the qualified name specifies a primitive type, the implementer
is required to return the canonical PrimitiveType
instance.
If the qualified name represents a class type, the implementation has the choice of fetching the class information from either a Java class (*.class) or source (*.java) file. The choice is given to implementations for performance reasons, though implementations are required to provide up-to-date information.
The '/' is a package delimiter, while the '$' can be treated literally as part of the class name, or as a class delimiter. Implementations must perform left-to-right resolution on the class name portion to determine whether '$' should be interpreted literally, or as a delimiter.
Although implementations are not required to return the same
JavaClass
instance each time, they are encouraged to
do so as it will dramatically improve performance.
fqVmName
- the fully-qualified type name (different from the
qualified source name and different from the descriptor) in
VM notation, such as "java/lang/Object" or
"java/util/Map$Entry"java.lang.InterruptedException
- if the task was interruptedSourceClass getSourceClassInterruptibly(java.lang.String fqName) throws java.lang.InterruptedException
SourceClass
for the fully-qualified class
name. The name must represent a class type. Implementations must
base the class information on Java source (*.java) content.
Similar to getClass( String fqName )
, implementations
must perform left-to-right package/class resolution.
fqName
- the fully-qualified type name in dotted notation, such
as "java.lang.Object" or "java.util.Map.Entry"java.lang.InterruptedException
- if the task was interrupted