Package org.hibernate.engine.spi

Examples of org.hibernate.engine.spi.ManagedEntity


    // any addition (even the double one described above) should invalidate the cross-ref array
    dirty = true;

    // determine the appropriate ManagedEntity instance to use based on whether the entity is enhanced or not.
    // also track whether the entity was already associated with the context
    final ManagedEntity managedEntity;
    final boolean alreadyAssociated;
    if ( ManagedEntity.class.isInstance( entity ) ) {
      managedEntity = (ManagedEntity) entity;
      alreadyAssociated = managedEntity.$$_hibernate_getEntityEntry() != null;
    }
    else {
      ManagedEntity wrapper = null;
      if ( nonEnhancedEntityXref == null ) {
        nonEnhancedEntityXref = new IdentityHashMap<Object, ManagedEntity>();
      }
      else {
        wrapper = nonEnhancedEntityXref.get( entity );
View Full Code Here


   *
   * @return The associated EntityEntry
   */
  public EntityEntry getEntityEntry(Object entity) {
    // essentially resolve the entity to a ManagedEntity...
    final ManagedEntity managedEntity;
    if ( ManagedEntity.class.isInstance( entity ) ) {
      managedEntity = (ManagedEntity) entity;
    }
    else if ( nonEnhancedEntityXref == null ) {
      managedEntity = null;
    }
    else {
      managedEntity = nonEnhancedEntityXref.get( entity );
    }

    // and get/return the EntityEntry from the ManagedEntry
    return managedEntity == null
        ? null
        : managedEntity.$$_hibernate_getEntityEntry();
  }
View Full Code Here

   */
  public EntityEntry removeEntityEntry(Object entity) {
    dirty = true;

    // again, resolve the entity to a ManagedEntity (which may not be possible for non-enhanced)...
    final ManagedEntity managedEntity;
    if ( ManagedEntity.class.isInstance( entity ) ) {
      managedEntity = (ManagedEntity) entity;
    }
    else if ( nonEnhancedEntityXref == null ) {
      managedEntity = null;
    }
    else {
      managedEntity = nonEnhancedEntityXref.remove( entity );
    }

    // if we could not resolve it, just return (it was not associated with this context)
    if ( managedEntity == null ) {
      return null;
    }

    // prepare for re-linking...
    final ManagedEntity previous = managedEntity.$$_hibernate_getPreviousManagedEntity();
    final ManagedEntity next = managedEntity.$$_hibernate_getNextManagedEntity();
    managedEntity.$$_hibernate_setPreviousManagedEntity( null );
    managedEntity.$$_hibernate_setNextManagedEntity( null );

    // re-link
    count--;

    if ( count == 0 ) {
      // handle as a special case...
      head = null;
      tail = null;

      assert previous == null;
      assert next == null;
    }
    else {
      // otherwise, previous or next (or both) should be non-null
      if ( previous == null ) {
        // we are removing head
        assert managedEntity == head;
        head = next;
      }
      else {
        previous.$$_hibernate_setNextManagedEntity( next );
      }

      if ( next == null ) {
        // we are removing tail
        assert managedEntity == tail;
        tail = previous;
      }
      else {
        next.$$_hibernate_setPreviousManagedEntity( previous );
      }
    }

    // finally clean out the ManagedEntity and return the associated EntityEntry
    final EntityEntry theEntityEntry = managedEntity.$$_hibernate_getEntityEntry();
View Full Code Here

   */
  public Map.Entry<Object, EntityEntry>[] reentrantSafeEntityEntries() {
    if ( dirty ) {
      reentrantSafeEntries = new EntityEntryCrossRefImpl[count];
      int i = 0;
      ManagedEntity managedEntity = head;
      while ( managedEntity != null ) {
        reentrantSafeEntries[i++] = new EntityEntryCrossRefImpl(
            managedEntity.$$_hibernate_getEntityInstance(),
            managedEntity.$$_hibernate_getEntityEntry()
        );
        managedEntity = managedEntity.$$_hibernate_getNextManagedEntity();
      }
      dirty = false;
    }
    return reentrantSafeEntries;
  }
View Full Code Here

   * Clear this context of all managed entities
   */
  public void clear() {
    dirty = true;

    ManagedEntity node = head;
    while ( node != null ) {
      final ManagedEntity nextNode = node.$$_hibernate_getNextManagedEntity();

      node.$$_hibernate_setEntityEntry( null );
      node.$$_hibernate_setPreviousManagedEntity( null );
      node.$$_hibernate_setNextManagedEntity( null );

View Full Code Here

  public void downgradeLocks() {
    if ( head == null ) {
      return;
    }

    ManagedEntity node = head;
    while ( node != null ) {
      node.$$_hibernate_getEntityEntry().setLockMode( LockMode.NONE );

      node = node.$$_hibernate_getNextManagedEntity();
    }
  }
View Full Code Here

    oos.writeInt( count );
    if ( count == 0 ) {
      return;
    }

    ManagedEntity managedEntity = head;
    while ( managedEntity != null ) {
      // so we know whether or not to build a ManagedEntityImpl on deserialize
      oos.writeBoolean( managedEntity == managedEntity.$$_hibernate_getEntityInstance() );
      oos.writeObject( managedEntity.$$_hibernate_getEntityInstance() );
      managedEntity.$$_hibernate_getEntityEntry().serialize( oos );

      managedEntity = managedEntity.$$_hibernate_getNextManagedEntity();
    }
  }
View Full Code Here

    if ( count == 0 ) {
      return context;
    }

    ManagedEntity previous = null;

    for ( int i = 0; i < count; i++ ) {
      final boolean isEnhanced = ois.readBoolean();
      final Object entity = ois.readObject();
      final EntityEntry entry = EntityEntry.deserialize( ois, rtn );
      final ManagedEntity managedEntity;
      if ( isEnhanced ) {
        managedEntity = (ManagedEntity) entity;
      }
      else {
        managedEntity = new ManagedEntityImpl( entity );
        if ( context.nonEnhancedEntityXref == null ) {
          context.nonEnhancedEntityXref = new IdentityHashMap<Object, ManagedEntity>();
        }
        context.nonEnhancedEntityXref.put( entity, managedEntity );
      }
      managedEntity.$$_hibernate_setEntityEntry( entry );

      if ( previous == null ) {
        context.head = managedEntity;
      }
      else {
        previous.$$_hibernate_setNextManagedEntity( managedEntity );
        managedEntity.$$_hibernate_setPreviousManagedEntity( previous );
      }

      previous = managedEntity;
    }
View Full Code Here

    // any addition (even the double one described above) should invalidate the cross-ref array
    dirty = true;

    // determine the appropriate ManagedEntity instance to use based on whether the entity is enhanced or not.
    // also track whether the entity was already associated with the context
    final ManagedEntity managedEntity;
    final boolean alreadyAssociated;
    if ( ManagedEntity.class.isInstance( entity ) ) {
      managedEntity = (ManagedEntity) entity;
      alreadyAssociated = managedEntity.$$_hibernate_getEntityEntry() != null;
    }
    else {
      ManagedEntity wrapper = null;
      if ( nonEnhancedEntityXref == null ) {
        nonEnhancedEntityXref = new IdentityHashMap<Object, ManagedEntity>();
      }
      else {
        wrapper = nonEnhancedEntityXref.get( entity );
View Full Code Here

  public boolean hasEntityEntry(Object entity) {
    return getEntityEntry( entity ) != null;
  }

  public EntityEntry getEntityEntry(Object entity) {
    final ManagedEntity managedEntity;
    if ( ManagedEntity.class.isInstance( entity ) ) {
      managedEntity = (ManagedEntity) entity;
    }
    else if ( nonEnhancedEntityXref == null ) {
      managedEntity = null;
    }
    else {
      managedEntity = nonEnhancedEntityXref.get( entity );
    }

    return managedEntity == null
        ? null
        : managedEntity.$$_hibernate_getEntityEntry();
  }
View Full Code Here

TOP

Related Classes of org.hibernate.engine.spi.ManagedEntity

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.