Class SpringDataEclipseStoreLazyBinaryHandler

java.lang.Object
org.eclipse.serializer.persistence.types.PersistenceTypeHandler.Abstract<org.eclipse.serializer.persistence.binary.types.Binary,T>
org.eclipse.serializer.persistence.binary.types.BinaryTypeHandler.Abstract<T>
org.eclipse.serializer.persistence.binary.types.AbstractBinaryHandlerCustom<SpringDataEclipseStoreLazy.Default<?>>
software.xdev.spring.data.eclipse.store.repository.lazy.SpringDataEclipseStoreLazyBinaryHandler
All Implemented Interfaces:
org.eclipse.serializer.persistence.binary.types.BinaryTypeHandler<SpringDataEclipseStoreLazy.Default<?>>, org.eclipse.serializer.persistence.types.PersistenceDataTypeHolder<org.eclipse.serializer.persistence.binary.types.Binary>, org.eclipse.serializer.persistence.types.PersistenceTypeDefinition, org.eclipse.serializer.persistence.types.PersistenceTypeDescription, org.eclipse.serializer.persistence.types.PersistenceTypeHandler<org.eclipse.serializer.persistence.binary.types.Binary,SpringDataEclipseStoreLazy.Default<?>>, org.eclipse.serializer.persistence.types.PersistenceTypeIdentity, org.eclipse.serializer.persistence.types.PersistenceTypeIdOwner, org.eclipse.serializer.persistence.types.PersistenceTypeLink

public final class SpringDataEclipseStoreLazyBinaryHandler extends org.eclipse.serializer.persistence.binary.types.AbstractBinaryHandlerCustom<SpringDataEclipseStoreLazy.Default<?>>
This is a complicated one. First off: this handler should only be used for WorkingCopies (see EclipseSerializerRegisteringCopier)!

First case:
The user creates a SpringDataEclipseStoreLazy and puts a object in it. This object is stored as with a default BinaryTypeHandler. But when it gets loaded, it does not load as the stored object, but it gets wrapped in a Lazy.Reference(Object).

Second case:
The actual lazy object gets loaded from the actual storage. In this case the ObjectSwizzling is important! It's the actual ObjectSwizzling from the storage (not from the EclipseSerializerRegisteringCopier). This means, the SpringDataEclipseStoreLazy holds the objectId of the original lazy in the original storage. Therefore if Lazy.get() is called a new working copy of the lazy from the storage is loaded.

  • Nested Class Summary

    Nested classes/interfaces inherited from interface org.eclipse.serializer.persistence.binary.types.BinaryTypeHandler

    org.eclipse.serializer.persistence.binary.types.BinaryTypeHandler.Abstract<T extends Object>

    Nested classes/interfaces inherited from interface org.eclipse.serializer.persistence.types.PersistenceDataTypeHolder

    org.eclipse.serializer.persistence.types.PersistenceDataTypeHolder.Default<D extends Object>

    Nested classes/interfaces inherited from interface org.eclipse.serializer.persistence.types.PersistenceTypeDefinition

    org.eclipse.serializer.persistence.types.PersistenceTypeDefinition.Default

    Nested classes/interfaces inherited from interface org.eclipse.serializer.persistence.types.PersistenceTypeDescription

    org.eclipse.serializer.persistence.types.PersistenceTypeDescription.Identity

    Nested classes/interfaces inherited from interface org.eclipse.serializer.persistence.types.PersistenceTypeHandler

    org.eclipse.serializer.persistence.types.PersistenceTypeHandler.Abstract<D extends Object,T extends Object>
  • Constructor Summary

    Constructors
    Constructor
    Description
    SpringDataEclipseStoreLazyBinaryHandler(org.eclipse.serializer.reference.ObjectSwizzling originalStoreLoader, WorkingCopier<?> copier)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    final void
    complete(org.eclipse.serializer.persistence.binary.types.Binary data, SpringDataEclipseStoreLazy.Default<?> instance, org.eclipse.serializer.persistence.types.PersistenceLoadHandler handler)
     
    create(org.eclipse.serializer.persistence.binary.types.Binary data, org.eclipse.serializer.persistence.types.PersistenceLoadHandler handler)
     
    final boolean
     
    final boolean
     
    final boolean
     
    final void
    iterateLoadableReferences(org.eclipse.serializer.persistence.binary.types.Binary data, org.eclipse.serializer.persistence.types.PersistenceReferenceLoader iterator)
     
    void
    store(org.eclipse.serializer.persistence.binary.types.Binary data, SpringDataEclipseStoreLazy.Default<?> instance, long objectId, org.eclipse.serializer.persistence.types.PersistenceStoreHandler<org.eclipse.serializer.persistence.binary.types.Binary> handler)
     
    void
    updateState(org.eclipse.serializer.persistence.binary.types.Binary data, SpringDataEclipseStoreLazy.Default<?> instance, org.eclipse.serializer.persistence.types.PersistenceLoadHandler handler)
     

    Methods inherited from class org.eclipse.serializer.persistence.binary.types.AbstractBinaryHandlerCustom

    allMembers, bytes, calculcateBinaryLengths, chars, Complex, CustomField, CustomField, CustomFields, defineValueType, determineHasPersistedReferences, ensureInitializeInstanceMembers, getClassDeclaredField, getClassDeclaredFieldOffset, getInstanceFieldOfType, initializeFields, initializeInstanceMembers, instanceMembers, isPrimitiveType, iterateInstanceReferences, iterateMemberTypes, keyValuesFields, membersPersistedLengthMaximum, membersPersistedLengthMinimum, SimpleArrayFields, SizedArrayFields

    Methods inherited from class org.eclipse.serializer.persistence.binary.types.BinaryTypeHandler.Abstract

    declaredField, declaredField

    Methods inherited from class org.eclipse.serializer.persistence.types.PersistenceTypeHandler.Abstract

    declaredField, declaredFields, deriveTypeName, initialize, internalInitialize, toString, type, typeId, typeName, validateAndImmure, validateInstance

    Methods inherited from class java.lang.Object

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

    Methods inherited from interface org.eclipse.serializer.persistence.binary.types.BinaryTypeHandler

    dataType

    Methods inherited from interface org.eclipse.serializer.persistence.types.PersistenceTypeDefinition

    runtimeTypeName, toRuntimeTypeIdentifier, typeId, typeName

    Methods inherited from interface org.eclipse.serializer.persistence.types.PersistenceTypeDescription

    instancePrimitiveMembers, instanceReferenceMembers, toTypeIdentifier

    Methods inherited from interface org.eclipse.serializer.persistence.types.PersistenceTypeHandler

    collectEnumConstants, getPersistedEnumOrdinal, guaranteeSpecificInstanceViablity, guaranteeSubTypeInstanceViablity, initialize, initializeState, isSpecificInstanceViable, isSubTypeInstanceViable, isValidEntityType, membersInDeclaredOrder, settingMembers, storingMembers, type, validateEntityType
  • Constructor Details

    • SpringDataEclipseStoreLazyBinaryHandler

      public SpringDataEclipseStoreLazyBinaryHandler(org.eclipse.serializer.reference.ObjectSwizzling originalStoreLoader, WorkingCopier<?> copier)
  • Method Details

    • store

      public void store(org.eclipse.serializer.persistence.binary.types.Binary data, SpringDataEclipseStoreLazy.Default<?> instance, long objectId, org.eclipse.serializer.persistence.types.PersistenceStoreHandler<org.eclipse.serializer.persistence.binary.types.Binary> handler)
      Specified by:
      store in interface org.eclipse.serializer.persistence.types.PersistenceTypeHandler<org.eclipse.serializer.persistence.binary.types.Binary,SpringDataEclipseStoreLazy.Default<?>>
      Specified by:
      store in class org.eclipse.serializer.persistence.binary.types.AbstractBinaryHandlerCustom<SpringDataEclipseStoreLazy.Default<?>>
    • create

      public SpringDataEclipseStoreLazy.Default<?> create(org.eclipse.serializer.persistence.binary.types.Binary data, org.eclipse.serializer.persistence.types.PersistenceLoadHandler handler)
      Specified by:
      create in interface org.eclipse.serializer.persistence.types.PersistenceTypeHandler<org.eclipse.serializer.persistence.binary.types.Binary,SpringDataEclipseStoreLazy.Default<?>>
      Specified by:
      create in class org.eclipse.serializer.persistence.binary.types.AbstractBinaryHandlerCustom<SpringDataEclipseStoreLazy.Default<?>>
    • updateState

      public void updateState(org.eclipse.serializer.persistence.binary.types.Binary data, SpringDataEclipseStoreLazy.Default<?> instance, org.eclipse.serializer.persistence.types.PersistenceLoadHandler handler)
    • complete

      public final void complete(org.eclipse.serializer.persistence.binary.types.Binary data, SpringDataEclipseStoreLazy.Default<?> instance, org.eclipse.serializer.persistence.types.PersistenceLoadHandler handler)
      Specified by:
      complete in interface org.eclipse.serializer.persistence.types.PersistenceTypeHandler<org.eclipse.serializer.persistence.binary.types.Binary,SpringDataEclipseStoreLazy.Default<?>>
      Overrides:
      complete in class org.eclipse.serializer.persistence.binary.types.AbstractBinaryHandlerCustom<SpringDataEclipseStoreLazy.Default<?>>
    • hasPersistedReferences

      public final boolean hasPersistedReferences()
      Specified by:
      hasPersistedReferences in interface org.eclipse.serializer.persistence.types.PersistenceTypeDefinition
      Overrides:
      hasPersistedReferences in class org.eclipse.serializer.persistence.binary.types.AbstractBinaryHandlerCustom<SpringDataEclipseStoreLazy.Default<?>>
    • hasPersistedVariableLength

      public final boolean hasPersistedVariableLength()
    • hasVaryingPersistedLengthInstances

      public final boolean hasVaryingPersistedLengthInstances()
      Specified by:
      hasVaryingPersistedLengthInstances in interface org.eclipse.serializer.persistence.types.PersistenceTypeDefinition
      Overrides:
      hasVaryingPersistedLengthInstances in class org.eclipse.serializer.persistence.binary.types.AbstractBinaryHandlerCustom<SpringDataEclipseStoreLazy.Default<?>>
    • iterateLoadableReferences

      public final void iterateLoadableReferences(org.eclipse.serializer.persistence.binary.types.Binary data, org.eclipse.serializer.persistence.types.PersistenceReferenceLoader iterator)