|
Eclipse JDT 2.0 |
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
A code snippet requestor implements a callback interface for installing the class files for a code snippet on the target and running it. In addition, it receives compilation problems detected during code snippet compilation.
Clients may implement this interface to provide a bridge a running Java VM.
IEvaluationContext.evaluateCodeSnippet(java.lang.String, java.lang.String[], java.lang.String[], int[], org.eclipse.jdt.core.IType, boolean, boolean, org.eclipse.jdt.core.eval.ICodeSnippetRequestor, org.eclipse.core.runtime.IProgressMonitor)
Field Summary | |
static int |
CODE_SNIPPET
Indicates a compilation problem related to a code snippet. |
static String |
DELEGATE_THIS
The name of the field that represent 'this' in a snippet class instance. |
static int |
IMPORT
Indicates a compilation problem related to an import declaration. |
static int |
INTERNAL
Indicates an internal problem. |
static String |
LOCAL_VAR_PREFIX
The prefix of fields that represent the local variables in a snippet class. |
static int |
PACKAGE
Indicates a compilation problem related to a package declaration. |
static String |
RESULT_TYPE_FIELD
The field of type java.lang.Class on the code snippet instance that contains the type of the returned value. |
static String |
RESULT_VALUE_FIELD
The name of the field (of type java.lang.Object ) on the code
snippet instance that contains the returned value. |
static String |
RUN_METHOD
The name of the instance method in the snippet class that runs the code snippet. |
static int |
VARIABLE
Indicates a compilation problem related to a global variable. |
Method Summary | |
boolean |
acceptClassFiles(byte[][] classFileBytes,
String[][] classFileCompoundNames,
String codeSnippetClassName)
Sends the given class files to the target and loads them. |
void |
acceptProblem(IMarker problemMarker,
String fragmentSource,
int fragmentKind)
Notifies of an evaluation problem. |
Field Detail |
public static final String LOCAL_VAR_PREFIX
public static final String DELEGATE_THIS
public static final String RUN_METHOD
public static final String RESULT_VALUE_FIELD
java.lang.Object
) on the code
snippet instance that contains the returned value.
public static final String RESULT_TYPE_FIELD
java.lang.Class
) on the code
snippet instance that contains the runtime type of the returned value.
public static final int VARIABLE
Note: if the problem is on the type of the variable, the marker source line number is -1; if the name of the variable, line number is 0; otherwise, the marker source line number is relative to the initializer code.
acceptProblem(org.eclipse.core.resources.IMarker, java.lang.String, int)
,
Constant Field Valuespublic static final int CODE_SNIPPET
acceptProblem(org.eclipse.core.resources.IMarker, java.lang.String, int)
,
Constant Field Valuespublic static final int IMPORT
acceptProblem(org.eclipse.core.resources.IMarker, java.lang.String, int)
,
Constant Field Valuespublic static final int PACKAGE
acceptProblem(org.eclipse.core.resources.IMarker, java.lang.String, int)
,
Constant Field Valuespublic static final int INTERNAL
acceptProblem(org.eclipse.core.resources.IMarker, java.lang.String, int)
,
Constant Field ValuesMethod Detail |
public boolean acceptClassFiles(byte[][] classFileBytes, String[][] classFileCompoundNames, String codeSnippetClassName)
null
, run the code snippet with this class
name. Returns whether the code snippet could be deployed. Note it must
return true
even if running the code snippet threw an exception.
The details of sending and loading the class files are left up to implementations.
To run a code snippet, an implementation should create a new instance of
the given code snippet class and call (directly or using another means) its
RUN_METHOD
.
Also before the call, the implementation should copy the values of the local
variables (if any) into the corresponding fields of the code snippet instance.
A field name is formed of LOCAL_VAR_PREFIX
preceded the name of the local variable. For example, the field name for
local variable "myLocal"
is "val$myLocal"
(assuming the
value of LOCAL_VAR_PREFIX
is "val$"). In the
same way, the implementation should copy the value of the 'this' object into the
field called DELEGATE_THIS
.
After calling the RUN_METHOD
, the values of the local
variables may have been modified. The implementation must copy the
values of the fields back into the local variables.
Finally, the overall value returned by the code snippet can be retrieved
from the special field RESULT_VALUE_FIELD
on the code snippet instance.
The Class
that is the runtime type of the returned value can be
retrieved from the special field RESULT_TYPE_FIELD
.
classFileBytes
- the list of class file bytesclassFileCompoundNames
- the corresponding list of class file type
compound names (example of a compound name: {"java", "lang", "Object"})codeSnippetClassName
- name of the actual class to instantiate and run,
or null
if none
true
if the code snippet was successfully deployedpublic void acceptProblem(IMarker problemMarker, String fragmentSource, int fragmentKind)
VARIABLE
) - fragment source is name of
variableCODE_SNIPPET
) - fragment source is code
snippetIMPORT
) - fragment source is
importPACKAGE
) - fragment source is
package declarationINTERNAL
) - no fragment source is involved, internal error occurred.
problemMarker
- the problem marker (cannot be null)fragmentSource
- the fragment sourcefragmentKind
- the kind of source fragment; one of:
VARIABLE
, CODE_SNIPPET
, IMPORT
,
PACKAGE
, or INTERNAL
|
Eclipse JDT 2.0 |
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |