Class CollectionExtension

java.lang.Object
de.ppi.deepsampler.persistence.bean.ext.StandardBeanConverterExtension
de.ppi.deepsampler.persistence.bean.ext.CollectionExtension
All Implemented Interfaces:
BeanConverterExtension

public class CollectionExtension
extends StandardBeanConverterExtension
A BeanConverterExtension that is able to convert Collections from the original objects to the generic persistent model PersistentBean and vice versa.

Only Collectionss with elements of non-primitive types (i.e. their wrapper) are processed by this extension, since the underlying persistence api is expected to be fully capable of dealing with simple Collections that contain only primitive values.

The original type of the Collection will we preserved in most cases. If this is not possible, the original Collection is replaced by an ArrayList or a HashSet depending on the original Collection. E.G. this happens for Lists that have been created by Collections.unmodifiableCollection(Collection) or Arrays.asList(Object[]).

This is a default BeanConverterExtension that is always enabled.

  • Constructor Summary

    Constructors
    Constructor Description
    CollectionExtension()  
  • Method Summary

    Modifier and Type Method Description
    java.lang.Object convert​(java.lang.Object originalBean, java.lang.reflect.ParameterizedType parameterizedType, PersistentBeanConverter persistentBeanConverter)
    Conversion logic for the type you defined to process and not to skip.
    boolean isProcessable​(java.lang.Class<?> beanClass, java.lang.reflect.ParameterizedType parameterizedType)
    Checks it this extension is responsible for objects of the type beanType.
    <T> T revert​(java.lang.Object persistentBean, java.lang.Class<T> targetBeanClass, java.lang.reflect.ParameterizedType targetBeanType, PersistentBeanConverter persistentBeanConverter)
    Conversion logic for the generic data-structure to the processed bean type.
    boolean skip​(java.lang.Class<?> beanClass, java.lang.reflect.ParameterizedType beanType)
    We skip the conversion of all Collections, which have primitive (or their wrapper) generic types.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • CollectionExtension

      public CollectionExtension()
  • Method Details

    • isProcessable

      public boolean isProcessable​(java.lang.Class<?> beanClass, java.lang.reflect.ParameterizedType parameterizedType)
      Description copied from interface: BeanConverterExtension
      Checks it this extension is responsible for objects of the type beanType.
      Parameters:
      beanClass - the Class of the type that will be processed by this extension.
      parameterizedType - the ParameterizedType of the type that will be processed by this extension. This parameter can only be supplied if the type is actually a generic type. If this is not the case, beanType is null.
      Returns:
      true if the Type should be processed within this extension, false otherwise
    • skip

      public boolean skip​(java.lang.Class<?> beanClass, java.lang.reflect.ParameterizedType beanType)
      We skip the conversion of all Collections, which have primitive (or their wrapper) generic types. Primitive Collections will then be handled by the concrete persistence api (i.e. Jackson for JSON serialisation).
      Specified by:
      skip in interface BeanConverterExtension
      Overrides:
      skip in class StandardBeanConverterExtension
      Parameters:
      beanType - the Type of the bean (Collection is expected here) that is handled by this BeanConverterExtension
      beanClass - the Classof the type that will be skipped by this extension.
      Returns:
      true if beanType is a primitive Collection
    • convert

      public java.lang.Object convert​(java.lang.Object originalBean, java.lang.reflect.ParameterizedType parameterizedType, PersistentBeanConverter persistentBeanConverter)
      Description copied from interface: BeanConverterExtension
      Conversion logic for the type you defined to process and not to skip. Converts an original bean to the PersistentBean which will be sent to the persistence api.

      It is also possible to convert bean to any other data structure if the underlying persistence api is fully capable of handling the data structure on its own.

      Specified by:
      convert in interface BeanConverterExtension
      Overrides:
      convert in class StandardBeanConverterExtension
      Parameters:
      originalBean - the original bean that is supposed to be converted to a serializable data structure, most likely a PersistentBean.
      parameterizedType - the ParameterizedType that will be used for the conversion. This parameter can only be supplied if the type is actually a generic type. If this is not the case, beanType is null.
      persistentBeanConverter - the current PersistentBeanConverter that may be used to convert sub objects of bean.
      Returns:
      the generic data-structure for the bean
    • revert

      public <T> T revert​(java.lang.Object persistentBean, java.lang.Class<T> targetBeanClass, java.lang.reflect.ParameterizedType targetBeanType, PersistentBeanConverter persistentBeanConverter)
      Description copied from interface: BeanConverterExtension
      Conversion logic for the generic data-structure to the processed bean type. Reverts to the original Bean by converting the PersistentBean, which was deserialized by the underlying persistence api, to the original object.

      It is also possible to deserialize other types then PersistentBean if the underlying persistence api is fully capable of deserializing this type.

      revert() is not called, if the persisted value is null. In that case, null will be returned as the deserialized value without calling an extension. If null needs to be converted, the value must be encapsulated in a DefaultPersistentBean.

      Specified by:
      revert in interface BeanConverterExtension
      Overrides:
      revert in class StandardBeanConverterExtension
      Type Parameters:
      T - type of the original bean
      Parameters:
      persistentBean - the generic bean
      targetBeanClass - the Class of the type that will be created from the persistentBean.
      targetBeanType - the ParameterizedType for the type that will be created from persistentBean, This parameter can only be supplied if the type is actually a generic type. If this is not the case, targetType is null.
      persistentBeanConverter - the current PersistentBeanConverter that may be used to revert sub objects of persistentBean.
      Returns:
      original bean