public virtual void AfterPropertiesSet()
 {
     /**
      * TODO post processing of proxies did not occur (CallingProxyPostProcessor not involved)
      *
      * @see CallingProxyPostProcessor
      */
     if (Self == null)
     {
         Self = this;
     }
 }
        public void RefreshMembers(IEntityMetaData metaData)
        {
            if (metaData.EnhancedType == null)
            {
                ((EntityMetaData)metaData).Initialize(CacheModification, EntityFactory);
                IEntityInstantiationExtension eie = entityInstantiationExtensions.GetExtension(metaData.EntityType);
                Type baseType = eie != null?eie.GetMappedEntityType(metaData.EntityType) : metaData.EntityType;

                ((EntityMetaData)metaData).EnhancedType = BytecodeEnhancer.GetEnhancedType(baseType, EntityEnhancementHint.Instance);
            }
            RelationMember[] relationMembers = metaData.RelationMembers;
            for (int a = relationMembers.Length; a-- > 0;)
            {
                relationMembers[a] = (RelationMember)RefreshMember(metaData, relationMembers[a]);
            }
            PrimitiveMember[] primitiveMembers = metaData.PrimitiveMembers;
            for (int a = primitiveMembers.Length; a-- > 0;)
            {
                primitiveMembers[a] = (PrimitiveMember)RefreshMember(metaData, primitiveMembers[a]);
            }

            HashMap <String, PrimitiveMember> nameToPrimitiveMember = new HashMap <String, PrimitiveMember>();

            for (int a = primitiveMembers.Length; a-- > 0;)
            {
                PrimitiveMember member = primitiveMembers[a];
                nameToPrimitiveMember.Put(member.Name, member);
            }
            PrimitiveMember[] alternateIdMembers = metaData.AlternateIdMembers;
            for (int a = alternateIdMembers.Length; a-- > 0;)
            {
                alternateIdMembers[a] = (PrimitiveMember)RefreshMember(metaData, alternateIdMembers[a]);
            }
            ((EntityMetaData)metaData).IdMember      = RefreshDefinedBy((PrimitiveMember)RefreshMember(metaData, metaData.IdMember), nameToPrimitiveMember);
            ((EntityMetaData)metaData).VersionMember = RefreshDefinedBy((PrimitiveMember)RefreshMember(metaData, metaData.VersionMember), nameToPrimitiveMember);

            ((EntityMetaData)metaData).UpdatedByMember = GetIfExists(metaData.UpdatedByMember, nameToPrimitiveMember);
            ((EntityMetaData)metaData).UpdatedOnMember = GetIfExists(metaData.UpdatedOnMember, nameToPrimitiveMember);
            ((EntityMetaData)metaData).CreatedByMember = GetIfExists(metaData.CreatedByMember, nameToPrimitiveMember);
            ((EntityMetaData)metaData).CreatedOnMember = GetIfExists(metaData.CreatedOnMember, nameToPrimitiveMember);

            for (int a = primitiveMembers.Length; a-- > 0;)
            {
                RefreshDefinedBy(primitiveMembers[a], nameToPrimitiveMember);
            }
            for (int a = alternateIdMembers.Length; a-- > 0;)
            {
                RefreshDefinedBy(alternateIdMembers[a], nameToPrimitiveMember);
            }
            UpdateEntityMetaDataWithLifecycleExtensions(metaData);
            ((EntityMetaData)metaData).Initialize(CacheModification, EntityFactory);
        }
 public void UnregisterEntityInstantiationExtension(IEntityInstantiationExtension entityInstantiationExtension, Type type)
 {
     entityInstantiationExtensions.Unregister(entityInstantiationExtension, type);
     Initialize();
 }