Package org.apache.ignite.marshaller.jdk

## Class JdkMarshallerImpl

- java.lang.Object
- - org.apache.ignite.marshaller.AbstractMarshaller
  - - org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller
    - - org.apache.ignite.marshaller.jdk.JdkMarshallerImpl

- All Implemented Interfaces:
    `JdkMarshaller`, `Marshaller`

      public class JdkMarshallerImpl
      extends AbstractNodeNameAwareMarshaller
      implements JdkMarshaller

  Implementation of `Marshaller` based on JDK serialization mechanism.

  # Configuration

  ## Mandatory

  This marshaller has no mandatory configuration parameters.

  ## Java Example

  `JdkMarshaller` needs to be explicitly configured to override default binary marshaller - see `IgniteBinary`.

       JdkMarshaller marshaller = new JdkMarshaller();

       IgniteConfiguration cfg = new IgniteConfiguration();

       // Override default marshaller.
       cfg.setMarshaller(marshaller);

       // Starts grid.
       G.start(cfg);

  ## Spring Example

  JdkMarshaller can be configured from Spring XML configuration file:

       <bean id="grid.custom.cfg" class="org.apache.ignite.configuration.IgniteConfiguration" singleton="true">
           ...
           <property name="marshaller">
               <bean class="org.apache.ignite.marshaller.MarshallersFactory"/>
           </property>
           ...
       </bean>

  For information about Spring framework visit www.springframework.org

- - ### Field Summary

    - ### Fields inherited from class org.apache.ignite.marshaller.AbstractMarshaller

      `ctx, DFLT_BUFFER_SIZE`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `JdkMarshallerImpl()` | Default constructor.
    `JdkMarshallerImpl​(@Nullable IgnitePredicate<String> clsFilter)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected byte[]` | `marshal0​(@Nullable Object obj)` | Marshals object to byte array.
    `protected void` | `marshal0​(@Nullable Object obj, OutputStream out)` | Marshals object to the output stream.
    `void` | `onUndeploy​(ClassLoader ldr)` | Undeployment callback invoked when class loader is being undeployed.
    `String` | `toString()`
    `protected <T> T` | `unmarshal0​(byte[] arr, @Nullable ClassLoader clsLdr)` | Unmarshals object from byte array using given class loader.
    `protected <T> T` | `unmarshal0​(InputStream in, @Nullable ClassLoader clsLdr)` | Unmarshals object from the input stream using given class loader.

    - ### Methods inherited from class org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller

      `marshal, marshal, nodeName, unmarshal, unmarshal`

    - ### Methods inherited from class org.apache.ignite.marshaller.AbstractMarshaller

      `getContext, setContext`

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

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

    - ### Methods inherited from interface org.apache.ignite.marshaller.Marshaller

      `marshal, marshal, nodeName, setContext, unmarshal, unmarshal`

- - ### Constructor Detail

    - #### JdkMarshallerImpl

          public JdkMarshallerImpl()

      Default constructor. Use this constructor with caution. It creates a JdkMarshaller instance that has class filtering DISABLED. Therefore, if it will be used on the server side to unmarshal user data received from the network, it may lead to security breaches.

    - #### JdkMarshallerImpl

          public JdkMarshallerImpl​(@Nullable
                                   @Nullable IgnitePredicate<String> clsFilter)

      Parameters:
        `clsFilter` - Class name filter.

  - ### Method Detail

    - #### marshal0

          protected void marshal0​(@Nullable
                                  @Nullable Object obj,
                                  OutputStream out)
                           throws IgniteCheckedException

      Marshals object to the output stream. This method should not close given output stream.
      Specified by:
        `marshal0` in class `AbstractNodeNameAwareMarshaller`
      Parameters:
        `obj` - Object to marshal. `null` object will be marshaled to binary `null` representation.
        `out` - Output stream to marshal into.
      Throws:
        `IgniteCheckedException` - If marshalling failed.

    - #### marshal0

          protected byte[] marshal0​(@Nullable
                                    @Nullable Object obj)
                             throws IgniteCheckedException

      Marshals object to byte array.
      Specified by:
        `marshal0` in class `AbstractNodeNameAwareMarshaller`
      Parameters:
        `obj` - Object to marshal. `null` object will be marshaled to binary `null` representation.
      Returns:
        Byte array.
      Throws:
        `IgniteCheckedException` - If marshalling failed.

    - #### unmarshal0

          protected <T> T unmarshal0​(InputStream in,
                                     @Nullable
                                     @Nullable ClassLoader clsLdr)
                              throws IgniteCheckedException

      Unmarshals object from the input stream using given class loader. This method should not close given input stream.
      Specified by:
        `unmarshal0` in class `AbstractNodeNameAwareMarshaller`
      Type Parameters:
        `T` - Type of unmarshalled object.
      Parameters:
        `in` - Input stream.
        `clsLdr` - If not `null` then given class loader will be used for unmarshal object.
      Returns:
        Unmarshalled object.
      Throws:
        `IgniteCheckedException` - If unmarshalling failed.

    - #### unmarshal0

          protected <T> T unmarshal0​(byte[] arr,
                                     @Nullable
                                     @Nullable ClassLoader clsLdr)
                              throws IgniteCheckedException

      Unmarshals object from byte array using given class loader.
      Specified by:
        `unmarshal0` in class `AbstractNodeNameAwareMarshaller`
      Type Parameters:
        `T` - Type of unmarshalled object.
      Parameters:
        `arr` - Byte array.
        `clsLdr` - If not `null` then given class loader will be used for unmarshal object.
      Returns:
        Unmarshalled object.
      Throws:
        `IgniteCheckedException` - If unmarshalling failed.

    - #### onUndeploy

          public void onUndeploy​(ClassLoader ldr)

      Undeployment callback invoked when class loader is being undeployed. Some marshallers may want to clean their internal state that uses the undeployed class loader somehow.
      Specified by:
        `onUndeploy` in interface `Marshaller`
      Parameters:
        `ldr` - Class loader being undeployed.

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`