Class OObjectEntitySerializer

java.lang.Object
com.orientechnologies.orient.object.enhancement.OObjectEntitySerializer

public class OObjectEntitySerializer extends Object
Author:
Luca Molino (molino.luca--at--gmail.com)
  • Field Details

    • SIMPLE_NAME

      public static final String SIMPLE_NAME
  • Constructor Details

    • OObjectEntitySerializer

      public OObjectEntitySerializer()
  • Method Details

    • getCurrentSerializedSchema

      protected static OObjectEntitySerializer.OObjectEntitySerializedSchema getCurrentSerializedSchema()
    • serializeObject

      public static <T> T serializeObject(T o, ODatabaseObject db)
      Method that given an object serialize it an creates a proxy entity, in case the object isn't generated using the ODatabaseObject.newInstance()
      Parameters:
      o - - the object to serialize
      Returns:
      the proxied object
    • attach

      public static <T> T attach(T o, ODatabaseObject db)
      Method that attaches all data contained in the object to the associated document
      Type Parameters:
      T -
      Parameters:
      o - :- the object to attach
      db - :- the database instance
      Returns:
      the object serialized or with attached data
    • detach

      public static <T> T detach(T o, ODatabaseObject db)
      Method that detaches all fields contained in the document to the given object. It returns by default a proxied instance. To get a detached non proxied instance @see OObjectEntitySerializer#detach(T o, ODatabaseObject db, boolean returnNonProxiedInstance)
      Type Parameters:
      T -
      Parameters:
      o - :- the object to detach
      db - :- the database instance
      Returns:
      proxied instance: the object serialized or with detached data
    • detach

      public static <T> T detach(T o, ODatabaseObject db, boolean returnNonProxiedInstance)
      Method that detaches all fields contained in the document to the g(e non fare al solitiven object.
      Type Parameters:
      T -
      Parameters:
      o - :- the object to detach
      db - :- the database instance
      returnNonProxiedInstance - :- defines if the return object will be a proxied instance or not. If set to TRUE and the object does not contains @Id and @Version fields it could procude data replication
      Returns:
      the object serialized or with detached data
    • detachAll

      public static <T> T detachAll(T o, ODatabaseObject db, boolean returnNonProxiedInstance, Map<Object,Object> alreadyDetached, Map<Object,Object> lazyObjects)
      Method that detaches all fields contained in the document to the given object and recursively all object tree. This may throw a StackOverflowError with big objects tree. To avoid it set the stack size with -Xss java option
      Type Parameters:
      T -
      Parameters:
      o - :- the object to detach
      db - :- the database instance
      returnNonProxiedInstance - :- defines if the return object will be a proxied instance or not. If set to TRUE and the object does not contains @Id and @Version fields it could procude data replication
      Returns:
      the object serialized or with detached data
    • getDocument

      public static ODocument getDocument(javassist.util.proxy.Proxy proxiedObject)
      Method that given a proxied entity returns the associated ODocument
      Parameters:
      proxiedObject - - the proxied entity object
      Returns:
      The ODocument associated with the object
    • getRid

      public static ORID getRid(javassist.util.proxy.Proxy proxiedObject)
      Method that given a proxied entity returns the associated ODocument RID
      Parameters:
      proxiedObject - - the proxied entity object
      Returns:
      The ORID of associated ODocument
    • getVersion

      public static int getVersion(javassist.util.proxy.Proxy proxiedObject)
      Method that given a proxied entity returns the associated ODocument version
      Parameters:
      proxiedObject - - the proxied entity object
      Returns:
      The version of associated ODocument
    • isClassField

      public static boolean isClassField(Class<?> iClass, String iField)
    • isTransientField

      public static boolean isTransientField(Class<?> iClass, String iField)
    • getCascadeDeleteFields

      public static List<String> getCascadeDeleteFields(Class<?> iClass)
    • getCascadeDeleteFields

      public static List<String> getCascadeDeleteFields(String iClassName)
    • isCascadeDeleteField

      public static boolean isCascadeDeleteField(Class<?> iClass, String iField)
    • isFetchLazyField

      public static boolean isFetchLazyField(Class<?> iClass, String iField)
    • isEmbeddedField

      public static boolean isEmbeddedField(Class<?> iClass, String iField)
    • checkClassRegistration

      protected static void checkClassRegistration(Class<?> iClass)
    • registerClass

      public static void registerClass(Class<?> iClass)
    • registerClass

      public static void registerClass(Class<?> iClass, boolean forceReload)
      Registers the class informations that will be used in serialization, deserialization and lazy loading of it. If already registered does nothing.
      Parameters:
      iClass - :- the Class<?> to register
      forceReload - whether or not to force the reload of the schema before registering
    • deregisterClass

      public static void deregisterClass(Class<?> iClass)
    • checkCascadeDelete

      protected static boolean checkCascadeDelete(javax.persistence.OneToOne oneToOne)
    • checkCascadeDelete

      protected static boolean checkCascadeDelete(javax.persistence.OneToMany oneToMany)
    • checkCascadeDelete

      protected static boolean checkCascadeDelete(javax.persistence.ManyToMany manyToMany)
    • checkCascadeAnnotationAttribute

      protected static boolean checkCascadeAnnotationAttribute(javax.persistence.CascadeType[] cascadeList)
    • checkFetchLazy

      protected static boolean checkFetchLazy(javax.persistence.OneToOne oneToOne)
    • addCascadeDeleteField

      protected static void addCascadeDeleteField(Class<?> currentClass, String fieldName)
    • addFetchLazyField

      protected static void addFetchLazyField(Class<?> currentClass, String fieldName)
    • isSerializedType

      public static boolean isSerializedType(Field iField)
    • getSerializedType

      public static Class<?> getSerializedType(Field iField)
    • isToSerialize

      public static boolean isToSerialize(Class<?> type)
    • getBoundClassTarget

      public static Class<?> getBoundClassTarget(Class<?> type)
    • serializeFieldValue

      public static Object serializeFieldValue(Class<?> type, Object iFieldValue)
    • deserializeFieldValue

      public static Object deserializeFieldValue(Class<?> type, Object iFieldValue)
    • typeToStream

      public static Object typeToStream(Object iFieldValue, OType iType, ODatabaseObject db, ODocument iRecord)
    • getClassFields

      public static List<String> getClassFields(Class<?> iClass)
    • hasBoundedDocumentField

      public static boolean hasBoundedDocumentField(Class<?> iClass)
    • getBoundedDocumentField

      public static Field getBoundedDocumentField(Class<?> iClass)
    • isIdField

      public static boolean isIdField(Class<?> iClass, String iFieldName)
    • isIdField

      public static boolean isIdField(Field iField)
    • getIdField

      public static Field getIdField(Class<?> iClass)
    • setIdField

      public static void setIdField(Class<?> iClass, Object iObject, ORID iValue) throws IllegalArgumentException, IllegalAccessException
      Throws:
      IllegalArgumentException
      IllegalAccessException
    • isVersionField

      public static boolean isVersionField(Class<?> iClass, String iFieldName)
    • getVersionField

      public static Field getVersionField(Class<?> iClass)
    • setVersionField

      public static void setVersionField(Class<?> iClass, Object iObject, int iValue) throws IllegalArgumentException, IllegalAccessException
      Throws:
      IllegalArgumentException
      IllegalAccessException
    • getFieldValue

      public static Object getFieldValue(Field iField, Object iInstance) throws IllegalArgumentException, IllegalAccessException
      Throws:
      IllegalArgumentException
      IllegalAccessException
    • setFieldValue

      public static void setFieldValue(Field iField, Object iInstance, Object iValue) throws IllegalArgumentException, IllegalAccessException
      Throws:
      IllegalArgumentException
      IllegalAccessException
    • invokeBeforeSerializationCallbacks

      public static void invokeBeforeSerializationCallbacks(Class<?> iClass, Object iInstance, ODocument iDocument)
    • invokeAfterSerializationCallbacks

      public static void invokeAfterSerializationCallbacks(Class<?> iClass, Object iInstance, ODocument iDocument)
    • invokeAfterDeserializationCallbacks

      public static void invokeAfterDeserializationCallbacks(Class<?> iClass, Object iInstance, ODocument iDocument)
    • invokeBeforeDeserializationCallbacks

      public static void invokeBeforeDeserializationCallbacks(Class<?> iClass, Object iInstance, ODocument iDocument)
    • getTypeByClass

      public static OType getTypeByClass(Class<?> iClass, String fieldName)
    • getTypeByClass

      public static OType getTypeByClass(Class<?> iClass, String fieldName, Field f)
    • getField

      public static Field getField(String fieldName, Class<?> iClass)
    • getSpecifiedMultiLinkedType

      public static Class<?> getSpecifiedMultiLinkedType(Field f)
    • getSpecifiedLinkedType

      public static Class<?> getSpecifiedLinkedType(Field f)
    • getNonProxiedInstance

      public static <T> T getNonProxiedInstance(T iObject)
    • synchronizeSchema

      public static void synchronizeSchema()
    • toStream

      protected static <T> T toStream(T iPojo, javassist.util.proxy.Proxy iProxiedPojo, ODatabaseObject db) throws IllegalArgumentException, IllegalAccessException
      Serialize the user POJO to a ORecordDocument instance.
      Parameters:
      iPojo - User pojo to serialize
      Throws:
      IllegalAccessException
      IllegalArgumentException
    • invokeCallback

      protected static void invokeCallback(Object iPojo, ODocument iDocument, Class<?> iAnnotation)
    • invokeCallback

      protected static void invokeCallback(Class<?> iClass, Object iPojo, ODocument iDocument, Class<?> iAnnotation)
    • getCallbackMethods

      protected static List<Method> getCallbackMethods(Class<?> iAnnotation, Class<?> iClass)
    • getDeclaredFields

      public static Field[] getDeclaredFields(Class<?> clazz)
      Retrieves and returns all declared Fields from the given class.
      Parameters:
      clazz - The class type.
      Returns:
      All declared Fields for the object instance.
    • getDeclaredAnnotations

      public static Annotation[] getDeclaredAnnotations(Class<?> clazz)
      Retrieves and returns all declared Fields from the given class.
      Parameters:
      clazz - The class type.
      Returns:
      All declared Fields for the object instance.
    • getEnclosingClass

      public static Class<?> getEnclosingClass(Class<?> clazz)