Class AbstractValueHolder

java.lang.Object
org.eclipse.persistence.internal.indirection.DatabaseValueHolder
org.eclipse.persistence.internal.indirection.UnitOfWorkValueHolder
io.jmix.eclipselink.impl.lazyloading.AbstractValueHolder
All Implemented Interfaces:
Serializable, Cloneable, org.eclipse.persistence.indirection.ValueHolderInterface, org.eclipse.persistence.indirection.WeavedAttributeValueHolderInterface, org.eclipse.persistence.internal.indirection.WrappingValueHolder
Direct Known Subclasses:
AbstractSingleValueHolder, CollectionValuePropertyHolder, ElementCollectionValueHolder, NonLoadingValueHolder

public abstract class AbstractValueHolder extends org.eclipse.persistence.internal.indirection.UnitOfWorkValueHolder implements org.eclipse.persistence.indirection.ValueHolderInterface, org.eclipse.persistence.indirection.WeavedAttributeValueHolderInterface, org.eclipse.persistence.internal.indirection.WrappingValueHolder, Cloneable, Serializable
See Also:
  • Field Details

    • beanFactory

      protected transient org.springframework.beans.factory.BeanFactory beanFactory
  • Constructor Details

    • AbstractValueHolder

      public AbstractValueHolder(org.springframework.beans.factory.BeanFactory beanFactory, org.eclipse.persistence.indirection.ValueHolderInterface originalValueHolder, Object owner, MetaProperty metaProperty)
  • Method Details

    • getWrappedValueHolder

      public org.eclipse.persistence.indirection.ValueHolderInterface getWrappedValueHolder()
      Specified by:
      getWrappedValueHolder in interface org.eclipse.persistence.internal.indirection.WrappingValueHolder
      Overrides:
      getWrappedValueHolder in class org.eclipse.persistence.internal.indirection.UnitOfWorkValueHolder
    • isCoordinatedWithProperty

      public boolean isCoordinatedWithProperty()
      Specified by:
      isCoordinatedWithProperty in interface org.eclipse.persistence.indirection.WeavedAttributeValueHolderInterface
      Overrides:
      isCoordinatedWithProperty in class org.eclipse.persistence.internal.indirection.DatabaseValueHolder
    • setIsCoordinatedWithProperty

      public void setIsCoordinatedWithProperty(boolean coordinated)
      Specified by:
      setIsCoordinatedWithProperty in interface org.eclipse.persistence.indirection.WeavedAttributeValueHolderInterface
      Overrides:
      setIsCoordinatedWithProperty in class org.eclipse.persistence.internal.indirection.DatabaseValueHolder
    • isNewlyWeavedValueHolder

      public boolean isNewlyWeavedValueHolder()
      Specified by:
      isNewlyWeavedValueHolder in interface org.eclipse.persistence.indirection.WeavedAttributeValueHolderInterface
      Overrides:
      isNewlyWeavedValueHolder in class org.eclipse.persistence.internal.indirection.DatabaseValueHolder
    • setIsNewlyWeavedValueHolder

      public void setIsNewlyWeavedValueHolder(boolean isNew)
      Specified by:
      setIsNewlyWeavedValueHolder in interface org.eclipse.persistence.indirection.WeavedAttributeValueHolderInterface
      Overrides:
      setIsNewlyWeavedValueHolder in class org.eclipse.persistence.internal.indirection.DatabaseValueHolder
    • shouldAllowInstantiationDeferral

      public boolean shouldAllowInstantiationDeferral()
      Specified by:
      shouldAllowInstantiationDeferral in interface org.eclipse.persistence.indirection.WeavedAttributeValueHolderInterface
      Overrides:
      shouldAllowInstantiationDeferral in class org.eclipse.persistence.internal.indirection.UnitOfWorkValueHolder
    • getMapping

      public org.eclipse.persistence.mappings.DatabaseMapping getMapping()
      Overrides:
      getMapping in class org.eclipse.persistence.internal.indirection.UnitOfWorkValueHolder
    • isEasilyInstantiated

      public boolean isEasilyInstantiated()
      Overrides:
      isEasilyInstantiated in class org.eclipse.persistence.internal.indirection.UnitOfWorkValueHolder
    • isPessimisticLockingValueHolder

      public boolean isPessimisticLockingValueHolder()
      Overrides:
      isPessimisticLockingValueHolder in class org.eclipse.persistence.internal.indirection.UnitOfWorkValueHolder
    • getWrappedValueHolderRemoteID

      public ObjID getWrappedValueHolderRemoteID()
      Overrides:
      getWrappedValueHolderRemoteID in class org.eclipse.persistence.internal.indirection.UnitOfWorkValueHolder
    • isSerializedRemoteUnitOfWorkValueHolder

      public boolean isSerializedRemoteUnitOfWorkValueHolder()
      Overrides:
      isSerializedRemoteUnitOfWorkValueHolder in class org.eclipse.persistence.internal.indirection.UnitOfWorkValueHolder
    • instantiateForUnitOfWorkValueHolder

      public Object instantiateForUnitOfWorkValueHolder(org.eclipse.persistence.internal.indirection.UnitOfWorkValueHolder unitOfWorkValueHolder)
      Overrides:
      instantiateForUnitOfWorkValueHolder in class org.eclipse.persistence.internal.indirection.UnitOfWorkValueHolder
    • releaseWrappedValueHolder

      public void releaseWrappedValueHolder(org.eclipse.persistence.internal.sessions.AbstractSession targetSession)
      Overrides:
      releaseWrappedValueHolder in class org.eclipse.persistence.internal.indirection.UnitOfWorkValueHolder
    • setBackupValueHolder

      public void setBackupValueHolder(org.eclipse.persistence.indirection.ValueHolderInterface backupValueHolder)
      Overrides:
      setBackupValueHolder in class org.eclipse.persistence.internal.indirection.UnitOfWorkValueHolder
    • getRow

      public org.eclipse.persistence.internal.sessions.AbstractRecord getRow()
      Overrides:
      getRow in class org.eclipse.persistence.internal.indirection.DatabaseValueHolder
    • getSession

      public org.eclipse.persistence.internal.sessions.AbstractSession getSession()
      Overrides:
      getSession in class org.eclipse.persistence.internal.indirection.DatabaseValueHolder
    • getValue

      public Object getValue(org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow)
      Overrides:
      getValue in class org.eclipse.persistence.internal.indirection.DatabaseValueHolder
    • postInstantiate

      public void postInstantiate()
      Overrides:
      postInstantiate in class org.eclipse.persistence.internal.indirection.DatabaseValueHolder
    • privilegedSetValue

      public void privilegedSetValue(Object value)
      Overrides:
      privilegedSetValue in class org.eclipse.persistence.internal.indirection.DatabaseValueHolder
    • setInstantiated

      public void setInstantiated()
      Overrides:
      setInstantiated in class org.eclipse.persistence.internal.indirection.DatabaseValueHolder
    • setRow

      public void setRow(org.eclipse.persistence.internal.sessions.AbstractRecord row)
      Overrides:
      setRow in class org.eclipse.persistence.internal.indirection.DatabaseValueHolder
    • setSession

      public void setSession(org.eclipse.persistence.internal.sessions.AbstractSession session)
      Overrides:
      setSession in class org.eclipse.persistence.internal.indirection.DatabaseValueHolder
    • setUninstantiated

      public void setUninstantiated()
      Overrides:
      setUninstantiated in class org.eclipse.persistence.internal.indirection.DatabaseValueHolder
    • buildCloneFor

      public Object buildCloneFor(Object originalAttributeValue)
      Specified by:
      buildCloneFor in class org.eclipse.persistence.internal.indirection.UnitOfWorkValueHolder
    • buildBackupCloneFor

      protected Object buildBackupCloneFor(Object cloneAttributeValue)
      Specified by:
      buildBackupCloneFor in class org.eclipse.persistence.internal.indirection.UnitOfWorkValueHolder
    • isInstantiated

      public boolean isInstantiated()
      Specified by:
      isInstantiated in interface org.eclipse.persistence.indirection.ValueHolderInterface
      Overrides:
      isInstantiated in class org.eclipse.persistence.internal.indirection.DatabaseValueHolder
    • getValue

      public Object getValue()
      Specified by:
      getValue in interface org.eclipse.persistence.indirection.ValueHolderInterface
      Overrides:
      getValue in class org.eclipse.persistence.internal.indirection.DatabaseValueHolder
    • shouldDelegateOnRecursiveLoad

      protected boolean shouldDelegateOnRecursiveLoad()
      Allows a reentrant getValue() call, made while this holder is already loading, to delegate to the original EclipseLink holder instead of starting the same Jmix load again.

      Keep this opt-in: it is needed for collection holders whose owner is managed. During the internal owner reload, EclipseLink may resolve the same owner instance from the persistence context and touch the same collection holder. For detached owners the reload uses another managed instance, so the original holder is not expected to re-enter.

      Returns:
      true only when delegating is needed to break same-holder recursion
    • loadValue

      protected abstract Object loadValue()
    • afterLoadValue

      protected abstract void afterLoadValue(Object value)
    • registerLoadedProperty

      protected void registerLoadedProperty(Object entity, String property)
    • setValue

      public void setValue(Object value)
      Specified by:
      setValue in interface org.eclipse.persistence.indirection.ValueHolderInterface
      Overrides:
      setValue in class org.eclipse.persistence.internal.indirection.DatabaseValueHolder
    • setLoadOptions

      public void setLoadOptions(io.jmix.eclipselink.impl.lazyloading.LoadOptions loadOptions)
    • getLoadOptions

      public io.jmix.eclipselink.impl.lazyloading.LoadOptions getLoadOptions()
    • getOwner

      public Object getOwner()
    • getPropertyInfo

      public MetaPropertyInfo getPropertyInfo()
    • replaceToExistingReferences

      protected void replaceToExistingReferences(Object entity, MetaProperty property, Object owner)
    • replaceLoadOptions

      protected void replaceLoadOptions(Object entity, MetaProperty property)
    • getMetadata

      protected Metadata getMetadata()
    • getMetadataTools

      protected MetadataTools getMetadataTools()
    • getDataManager

      protected UnconstrainedDataManager getDataManager()
    • getFetchPlans

      protected FetchPlans getFetchPlans()