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); }
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); } } }
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); } }
public override void Deactivate(IActivationContext context) { if (context.Depth().RequiresActivation()) { CascadeActivation(context); } SetOn(context.Transaction(), 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()); }
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; }
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()); }
private void ReadForActivation(IActivationContext context) { Read(context.Transaction(), null, context.TargetObject(), context.Depth(), Const4 .AddMembersToIdTreeOnly, false); }
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()); }