Module jdk.jshell
Package jdk.jshell

# Class SnippetEvent

java.lang.Object
jdk.jshell.SnippetEvent

    public class SnippetEvent
    extends Object

A description of a change to a Snippet. These are generated by direct changes to state with `JShell.eval(String)` or `JShell.drop(Snippet)`, or indirectly by these same methods as dependencies change or Snippets are overwritten. For direct changes, the `causeSnippet()` is `null`.

`SnippetEvent` is immutable: an access to any of its methods will always return the same result. and thus is thread-safe.

Since:
  9

## Method Summary

Modifier and Type | Method | Description
--- | --- | ---
`Snippet` | `causeSnippet()` | Either the snippet whose change caused this update or `null`.
`JShellException` | `exception()` | An instance of `UnresolvedReferenceException`, if an unresolved reference was encountered, or an instance of `EvalException` if an exception was thrown during execution, otherwise `null`.
`boolean` | `isSignatureChange()` | Indicates whether the signature has changed.
`Snippet.Status` | `previousStatus()` | The status before the transition.
`Snippet` | `snippet()` | The Snippet which has changed
`Snippet.Status` | `status()` | The after status.
`String` | `toString()` | Return a string representation of the event
`String` | `value()` | The result value of successful run.

### Methods declared in class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Method Details

### snippet

public Snippet snippet()
The Snippet which has changed

Returns:
  the return the Snippet whose `Status` has changed.

### previousStatus

public Snippet.Status previousStatus()
The status before the transition. If this event describes a Snippet creation return `NONEXISTENT`.

Returns:
  the previousStatus

### status

public Snippet.Status status()
The after status. Note: this may be the same as the previous status (not all changes cause a `Status` change.

Returns:
  the status

### isSignatureChange

public boolean isSignatureChange()
Indicates whether the signature has changed. Coming in or out of definition is always a signature change. An overwritten Snippet `(status == OVERWRITTEN)` is always `false` as responsibility for the definition has passed to the overwriting definition.

Returns:
  `true` if the signature changed; otherwise `false`

### causeSnippet

public Snippet causeSnippet()
Either the snippet whose change caused this update or `null`. This returns `null` if this change is the creation of a new Snippet via `eval` or it is the explicit drop of a Snippet with `drop`.

Returns:
  the Snippet which caused this change or `null` if directly caused by an API action.

### exception

public JShellException exception()
An instance of `UnresolvedReferenceException`, if an unresolved reference was encountered, or an instance of `EvalException` if an exception was thrown during execution, otherwise `null`.

Returns:
  the exception or `null`.

### value

public String value()
The result value of successful run. The value is null if not executed or an exception was thrown.

Returns:
  the value or `null`.

### toString

public String toString()
Return a string representation of the event

Overrides:
  `toString` in class `Object`
Returns:
  a descriptive representation of the SnippetEvent