Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Eclipse JDT Release 3.0
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## 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.

Field Detail

### LOCAL_VAR_PREFIX

    public static final String LOCAL_VAR_PREFIX

  The prefix of fields that represent the local variables in a snippet class.

### DELEGATE_THIS

    public static final String DELEGATE_THIS

  The name of the field that represent 'this' in a snippet class instance.

### RUN_METHOD

    public 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

    public 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

    public 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

    public 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

    public static final int CODE_SNIPPET

  Indicates a compilation problem related to a code snippet.

  See Also:
    `acceptProblem(IMarker, String, int)`, Constant Field Values

### IMPORT

    public static final int IMPORT

  Indicates a compilation problem related to an import declaration.

  See Also:
    `acceptProblem(IMarker, String, int)`, Constant Field Values

### PACKAGE

    public static final int PACKAGE

  Indicates a compilation problem related to a package declaration.

  See Also:
    `acceptProblem(IMarker, String, int)`, Constant Field Values

### INTERNAL

    public static final int INTERNAL

  Indicates an internal problem.

  See Also:
    `acceptProblem(IMarker, String, int)`, Constant Field Values

Method Detail

### acceptClassFiles

    public 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

    public 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`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Eclipse JDT Release 3.0
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright (c) IBM Corp. and others 2000, 2004. All Rights Reserved.