|
|
|
|
org.eclipse.jdt.core.eval
Interface ICodeSnippetRequestor
-
public interface ICodeSnippetRequestor
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.
-
See Also:
-
IEvaluationContext.evaluateCodeSnippet(String, ICodeSnippetRequestor, org.eclipse.core.runtime.IProgressMonitor) ,
IEvaluationContext.evaluateCodeSnippet(String, String[], String[], int[], org.eclipse.jdt.core.IType, boolean, boolean, 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. |
LOCAL_VAR_PREFIX
static final
String LOCAL_VAR_PREFIX
- The prefix of fields that represent the local variables in a snippet
class.
DELEGATE_THIS
static final
String DELEGATE_THIS
- The name of the field that represent 'this' in a snippet class
instance.
RUN_METHOD
static final
String RUN_METHOD
- The name of the instance method in the snippet class that runs the code
snippet.
-
See Also:
-
Constant Field Values
RESULT_VALUE_FIELD
static final
String RESULT_VALUE_FIELD
- The name of the field (of type
java.lang.Object ) on the code
snippet instance that contains the returned value.
-
See Also:
-
Constant Field Values
RESULT_TYPE_FIELD
static final
String RESULT_TYPE_FIELD
- The field of type java.lang.Class on the code snippet instance that contains the type of the returned value.
The name of the field (of type
java.lang.Class ) on the code
snippet instance that contains the runtime type of the returned value.
-
See Also:
-
Constant Field Values
VARIABLE
static final int VARIABLE
- Indicates a compilation problem related to a global 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.
-
See Also:
-
acceptProblem(IMarker, String, int) ,
Constant Field Values
CODE_SNIPPET
static final int CODE_SNIPPET
- Indicates a compilation problem related to a code snippet.
-
See Also:
-
acceptProblem(IMarker, String, int) ,
Constant Field Values
IMPORT
static final int IMPORT
- Indicates a compilation problem related to an import declaration.
-
See Also:
-
acceptProblem(IMarker, String, int) ,
Constant Field Values
PACKAGE
static final int PACKAGE
- Indicates a compilation problem related to a package declaration.
-
See Also:
-
acceptProblem(IMarker, String, int) ,
Constant Field Values
INTERNAL
static final int INTERNAL
- Indicates an internal problem.
-
See Also:
-
acceptProblem(IMarker, String, int) ,
Constant Field Values
acceptClassFiles
boolean acceptClassFiles(byte[][] classFileBytes,
String[][] classFileCompoundNames,
String codeSnippetClassName)
- Sends the given class files to the target and loads them. If the given
class name is not
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 .
-
-
Parameters:
-
classFileBytes - the list of class file bytes -
classFileCompoundNames - 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
-
Returns:
-
true if the code snippet was successfully deployed
acceptProblem
void acceptProblem(
IMarker problemMarker,
String fragmentSource,
int fragmentKind)
- Notifies of an evaluation problem.
Problems can arise for source of the following kinds:
- global variable (
VARIABLE ) - fragment source is name of
variable
- code snippet (
CODE_SNIPPET ) - fragment source is code
snippet
- import declaration (
IMPORT ) - fragment source is
import
- package declaration (
PACKAGE ) - fragment source is
package declaration
- other (
INTERNAL ) - no fragment source is involved, internal error occurred.
-
-
Parameters:
-
problemMarker - the problem marker (cannot be null) -
fragmentSource - the fragment source -
fragmentKind - the kind of source fragment; one of:
VARIABLE , CODE_SNIPPET , IMPORT ,
PACKAGE , or INTERNAL
Copyright (c) IBM Corp. and others 2000, 2008. All Rights Reserved.
|
|
|