Package org.optaplanner.persistence.jackson.impl.domain.solution

## Class JacksonSolutionFileIO<Solution_>

- java.lang.Object
- - org.optaplanner.persistence.jackson.impl.domain.solution.JacksonSolutionFileIO<Solution_>

- Type Parameters:
    `Solution_` - the solution type, the class with the `PlanningSolution` annotation
  All Implemented Interfaces:
    `SolutionFileIO<Solution_>`

      public class JacksonSolutionFileIO<Solution_>
      extends Object
      implements SolutionFileIO<Solution_>

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `JacksonSolutionFileIO​(Class<Solution_> clazz)` |
    `JacksonSolutionFileIO​(Class<Solution_> clazz, com.fasterxml.jackson.databind.ObjectMapper mapper)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `String` | `getInputFileExtension()` | Every `PlanningSolution` type potentially has its own file extension.
    `String` | `getOutputFileExtension()` | It's highly recommended that this method returns the same value as `SolutionFileIO.getInputFileExtension()`, which it does by default unless it's overridden, because a good output file is able to function as an input file.
    `Solution_` | `read​(File inputSolutionFile)` | This method is thread-safe.
    `void` | `write​(Solution_ solution, File file)` | This method is thread-safe.

    - ### Methods inherited from class java.lang.Object

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

- - ### Constructor Detail

    - #### JacksonSolutionFileIO

          public JacksonSolutionFileIO​(Class<Solution_> clazz)

    - #### JacksonSolutionFileIO

          public JacksonSolutionFileIO​(Class<Solution_> clazz,
                                       com.fasterxml.jackson.databind.ObjectMapper mapper)

  - ### Method Detail

    - #### getInputFileExtension

          public String getInputFileExtension()

      Description copied from interface: `SolutionFileIO`
      Every `PlanningSolution` type potentially has its own file extension. If no specific file extension is defined by the use case, the following are recommended:
      - If this `SolutionFileIO` implementation serializes to XML, use file extension "xml".
      - If this `SolutionFileIO` implementation serializes to text, use file extension "txt".
      - If this `SolutionFileIO` implementation serializes to binary, use file extension "dat".

      It's good practice that both the input and the output file have the same file extension, because a good output file is able to function as an input file. Therefore `SolutionFileIO.getOutputFileExtension()` defaults to returning the same as this method.

      The file extension does not include the dot that separates it from the base name.

      This method is thread-safe.

      Specified by:
        `getInputFileExtension` in interface `SolutionFileIO<Solution_>`
      Returns:
        never null, for example "xml"

    - #### getOutputFileExtension

          public String getOutputFileExtension()

      Description copied from interface: `SolutionFileIO`
      It's highly recommended that this method returns the same value as `SolutionFileIO.getInputFileExtension()`, which it does by default unless it's overridden, because a good output file is able to function as an input file.
      Specified by:
        `getOutputFileExtension` in interface `SolutionFileIO<Solution_>`
      Returns:
        never null, for example "xml"
      See Also:
        `SolutionFileIO.getInputFileExtension()`

    - #### read

          public Solution_ read​(File inputSolutionFile)

      Description copied from interface: `SolutionFileIO`
      This method is thread-safe.
      Specified by:
        `read` in interface `SolutionFileIO<Solution_>`
      Parameters:
        `inputSolutionFile` - never null
      Returns:
        never null

    - #### write

          public void write​(Solution_ solution,
                            File file)

      Description copied from interface: `SolutionFileIO`
      This method is thread-safe.
      Specified by:
        `write` in interface `SolutionFileIO<Solution_>`
      Parameters:
        `solution` - never null
        `file` - never null, parent directory already exists