Esempio n. 1
0
        internal virtual void ActivateInternal(IActivationContext context)
        {
            if (null == context)
            {
                throw new ArgumentNullException();
            }
            if (!context.Depth().RequiresActivation())
            {
                return;
            }
            ObjectContainerBase container = context.Container();

            if (context.Depth().Mode().IsRefresh())
            {
                LogActivation(container, "refresh");
            }
            else
            {
                if (IsActive())
                {
                    _class.CascadeActivation(context);
                    return;
                }
                LogActivation(container, "activate");
            }
            ReadForActivation(context);
        }
Esempio n. 2
0
        private void CascadeActivation(IActivationContext context)
        {
            IActivationDepth depth = context.Depth();

            if (!depth.RequiresActivation())
            {
                return;
            }
            if (depth.Mode().IsDeactivate())
            {
                Container().StillToDeactivate(_transaction, context.TargetObject(), depth, false);
            }
            else
            {
                // FIXME: [TA] do we really need to check for isValueType here?
                Db4objects.Db4o.Internal.ClassMetadata classMetadata = context.ClassMetadata();
                if (classMetadata.IsStruct())
                {
                    classMetadata.CascadeActivation(context);
                }
                else
                {
                    Container().StillToActivate(context);
                }
            }
        }
Esempio n. 3
0
        public override void Deactivate(IActivationContext context)
        {
            if (!Alive() || !ShouldStoreField())
            {
                return;
            }
            bool isEnumClass = _containingClass.IsEnum();

            if (_isPrimitive && !_isArray)
            {
                if (!isEnumClass)
                {
                    object nullValue = _reflectField.GetFieldType().NullValue();
                    FieldAccessor().Set(_reflectField, context.TargetObject(), nullValue);
                }
                return;
            }
            if (context.Depth().RequiresActivation())
            {
                CascadeActivation(context);
            }
            if (!isEnumClass)
            {
                FieldAccessor().Set(_reflectField, context.TargetObject(), null);
            }
        }
Esempio n. 4
0
		private void CascadeActivation(IActivationContext context)
		{
			IActivationDepth depth = context.Depth();
			if (!depth.RequiresActivation())
			{
				return;
			}
			if (depth.Mode().IsDeactivate())
			{
				Container().StillToDeactivate(_transaction, context.TargetObject(), depth, false);
			}
			else
			{
				// FIXME: [TA] do we really need to check for isValueType here?
				Db4objects.Db4o.Internal.ClassMetadata classMetadata = context.ClassMetadata();
				if (classMetadata.IsStruct())
				{
					classMetadata.CascadeActivation(context);
				}
				else
				{
					Container().StillToActivate(context);
				}
			}
		}
Esempio n. 5
0
		public override void Deactivate(IActivationContext context)
		{
			if (context.Depth().RequiresActivation())
			{
				CascadeActivation(context);
			}
			SetOn(context.Transaction(), context.TargetObject(), null);
		}
Esempio n. 6
0
 public override void Deactivate(IActivationContext context)
 {
     if (context.Depth().RequiresActivation())
     {
         CascadeActivation(context);
     }
     SetOn(context.Transaction(), context.TargetObject(), null);
 }
Esempio n. 7
0
 protected object CascadingTarget(IActivationContext context)
 {
     if (context.Depth().Mode().IsDeactivate())
     {
         if (null == _reflectField)
         {
             return(null);
         }
         return(FieldAccessor().Get(_reflectField, context.TargetObject()));
     }
     return(GetOrCreate(context.Transaction(), context.TargetObject()));
 }
Esempio n. 8
0
        private void EnsureObjectIsActive(IActivationContext context)
        {
            if (!context.Depth().Mode().IsActivate())
            {
                return;
            }
            if (Handlers4.IsValueType(GetHandler()))
            {
                return;
            }
            ObjectContainerBase container     = context.Container();
            ClassMetadata       classMetadata = container.ClassMetadataForObject(context.TargetObject
                                                                                     ());

            if (classMetadata == null || !classMetadata.HasIdentity())
            {
                return;
            }
            if (container.IsActive(context.TargetObject()))
            {
                return;
            }
            container.StillToActivate(context.Descend());
        }
Esempio n. 9
0
		private bool ProcessedByImmediateActivation(IActivationContext context)
		{
			if (!StackIsSmall())
			{
				return false;
			}
			if (!context.Depth().RequiresActivation())
			{
				return true;
			}
			ObjectReference @ref = context.Transaction().ReferenceForObject(context.TargetObject
				());
			if (@ref == null)
			{
				return false;
			}
			if (HandledInCurrentTopLevelCall(@ref))
			{
				return true;
			}
			FlagAsHandled(@ref);
			IncStackDepth();
			try
			{
				@ref.ActivateInternal(context);
			}
			finally
			{
				DecStackDepth();
			}
			return true;
		}
Esempio n. 10
0
		public void StillToActivate(IActivationContext context)
		{
			// TODO: We don't want the simple classes to search the hc_tree
			// Kick them out here.
			//		if (a_object != null) {
			//			Class clazz = a_object.getClass();
			//			if(! clazz.isPrimitive()){
			if (ProcessedByImmediateActivation(context))
			{
				return;
			}
			_stillToActivate = StillTo1(context.Transaction(), _stillToActivate, context.TargetObject
				(), context.Depth());
		}
Esempio n. 11
0
		private void ReadForActivation(IActivationContext context)
		{
			Read(context.Transaction(), null, context.TargetObject(), context.Depth(), Const4
				.AddMembersToIdTreeOnly, false);
		}
Esempio n. 12
0
		internal virtual void ActivateInternal(IActivationContext context)
		{
			if (null == context)
			{
				throw new ArgumentNullException();
			}
			if (!context.Depth().RequiresActivation())
			{
				return;
			}
			ObjectContainerBase container = context.Container();
			if (context.Depth().Mode().IsRefresh())
			{
				LogActivation(container, "refresh");
			}
			else
			{
				if (IsActive())
				{
					_class.CascadeActivation(context);
					return;
				}
				LogActivation(container, "activate");
			}
			ReadForActivation(context);
		}
Esempio n. 13
0
 private void ReadForActivation(IActivationContext context)
 {
     Read(context.Transaction(), null, context.TargetObject(), context.Depth(), Const4
          .AddMembersToIdTreeOnly, false);
 }
		public override void Deactivate(IActivationContext context)
		{
			if (!Alive() || !ShouldStoreField())
			{
				return;
			}
			bool isEnumClass = _containingClass.IsEnum();
			if (_isPrimitive && !_isArray)
			{
				if (!isEnumClass)
				{
					object nullValue = _reflectField.GetFieldType().NullValue();
					FieldAccessor().Set(_reflectField, context.TargetObject(), nullValue);
				}
				return;
			}
			if (context.Depth().RequiresActivation())
			{
				CascadeActivation(context);
			}
			if (!isEnumClass)
			{
				FieldAccessor().Set(_reflectField, context.TargetObject(), null);
			}
		}
		protected object CascadingTarget(IActivationContext context)
		{
			if (context.Depth().Mode().IsDeactivate())
			{
				if (null == _reflectField)
				{
					return null;
				}
				return FieldAccessor().Get(_reflectField, context.TargetObject());
			}
			return GetOrCreate(context.Transaction(), context.TargetObject());
		}
		private void EnsureObjectIsActive(IActivationContext context)
		{
			if (!context.Depth().Mode().IsActivate())
			{
				return;
			}
			if (Handlers4.IsValueType(GetHandler()))
			{
				return;
			}
			ObjectContainerBase container = context.Container();
			ClassMetadata classMetadata = container.ClassMetadataForObject(context.TargetObject
				());
			if (classMetadata == null || !classMetadata.HasIdentity())
			{
				return;
			}
			if (container.IsActive(context.TargetObject()))
			{
				return;
			}
			container.StillToActivate(context.Descend());
		}