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(PersistentSnippet)`, 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.

### Method Summary

All Methods Instance Methods Concrete Methods
`Snippet` `causeSnippet()` Either the snippet whose change caused this update or `null`.
`Exception` `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()` Has the signature changed? Coming in or out of definition (status.isDefined) is always a signature change.
`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 inherited from class java.lang.Object

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

### Method Detail

#### 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()

Has the signature changed? Coming in or out of definition (status.isDefined) 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.

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