# Interface Reporter

public interface Reporter
Interface for reporting diagnostics and other messages.

Diagnostics consist of a `diagnostic kind` and a message, and may additionally be associated with an `element`, a `tree node` in a documentation comment, or an arbitrary position in a given `file`. Other messages may be written directly to one of two streams that are informally for use by "standard output" and "diagnostic output", where "standard output" means the output that is the expected result of executing some operation, such as the command-line help that is generated when using a `--help` option, and "diagnostic output" refers to any errors, warnings and other output that is a side effect of executing the operation.

The exact manner in which diagnostics are output is unspecified and depends on the enclosing context. For example:

- The `DocumentationTool` API allows a client to specify a `DiagnosticListener` to which diagnostics will be `reported`. If no listener is specified, diagnostics will be written to a given stream, or to `System.err` if no such stream is provided.
- The `ToolProvider` API allows a client to specify the streams to be used for reporting standard and diagnostic output.

Since:
  9

- ## Method Summary

  Modifier and Type
  Method
  Description
  `default PrintWriter`
  `getDiagnosticWriter()`
  Returns a writer that can be used to write diagnostic output, or `null` if no such writer is available.
  `default PrintWriter`
  `getStandardWriter()`
  Returns a writer that can be used to write non-diagnostic output, or `null` if no such writer is available.
  `default void`
  `print(Diagnostic.Kind kind, DocTreePath path, int start, int pos, int end, String message)`
  Prints a diagnostic message related to a position within a range of characters in a tree node.
  `void`
  `print(Diagnostic.Kind kind, DocTreePath path, String message)`
  Prints a diagnostic message related to a tree node in a documentation comment.
  `void`
  `print(Diagnostic.Kind kind, String message)`
  Prints a diagnostic message.
  `void`
  `print(Diagnostic.Kind kind, Element element, String message)`
  Prints a diagnostic message related to an element.
  `default void`
  `print(Diagnostic.Kind kind, FileObject file, int start, int pos, int end, String message)`
  Prints a diagnostic message related to a position within a range of characters in a file.

- ## Method Details

  - ### print

    void print(Diagnostic.Kind kind, String message)
    Prints a diagnostic message.
    Parameters:
      `kind` - the kind of diagnostic
      `message` - the message to be printed

  - ### print

    void print(Diagnostic.Kind kind, DocTreePath path, String message)
    Prints a diagnostic message related to a tree node in a documentation comment.
    Parameters:
      `kind` - the kind of diagnostic
      `path` - the path for the tree node
      `message` - the message to be printed

  - ### print

    default void print(Diagnostic.Kind kind, DocTreePath path, int start, int pos, int end, String message)
    Prints a diagnostic message related to a position within a range of characters in a tree node. Only kinds of `DocTree` that wrap a simple string value are supported as leaf nodes of the given path. This currently includes `CommentTree`, `DocTypeTree`, `ReferenceTree`, and `TextTree`. The positions are all 0-based character offsets from the beginning of string. The positions should satisfy the relation `start <= pos <= end`.
    Implementation Requirements:
      This implementation ignores the `(start, pos, end)` values and simply calls `print(kind, path, message)`.
    Parameters:
      `kind` - the kind of diagnostic
      `path` - the path for the tree node
      `start` - the beginning of the enclosing range
      `pos` - the position
      `end` - the end of the enclosing range
      `message` - the message to be printed
    Throws:
      `IllegalArgumentException` - if `start`, `pos` and `end` do not form a valid range.
    Since:
      18

  - ### print

    void print(Diagnostic.Kind kind, Element element, String message)
    Prints a diagnostic message related to an element.
    Parameters:
      `kind` - the kind of diagnostic
      `element` - the element
      `message` - the message to be printed

  - ### print

    default void print(Diagnostic.Kind kind, FileObject file, int start, int pos, int end, String message)
    Prints a diagnostic message related to a position within a range of characters in a file. The positions are all 0-based character offsets from the beginning of content of the file. The positions should satisfy the relation `start <= pos <= end`.
    Implementation Requirements:
      This implementation always throws `UnsupportedOperationException`. The implementation provided by the `javadoc` tool to `initialize` a doclet overrides this implementation.
    Parameters:
      `kind` - the kind of diagnostic
      `file` - the file
      `start` - the beginning of the enclosing range
      `pos` - the position
      `end` - the end of the enclosing range
      `message` - the message to be printed
    Since:
      17

  - ### getStandardWriter

    default PrintWriter getStandardWriter()
    Returns a writer that can be used to write non-diagnostic output, or `null` if no such writer is available.
    API Note:
      The value may or may not be the same as that returned by `getDiagnosticWriter()`.
    Implementation Requirements:
      This implementation returns `null`. The implementation provided by the `javadoc` tool to `initialize` a doclet always returns a non-`null` value.
    Returns:
      the writer
    Since:
      17

  - ### getDiagnosticWriter

    default PrintWriter getDiagnosticWriter()
    Returns a writer that can be used to write diagnostic output, or `null` if no such writer is available.
    API Note:
      The value may or may not be the same as that returned by `getStandardWriter()`.
    Implementation Requirements:
      This implementation returns `null`. The implementation provided by the `javadoc` tool to `initialize` a doclet always returns a non-`null` value.
    Returns:
      the writer
    Since:
      17