public static int SlotHandlerVersion(IExtObjectContainer objectContainer, object obj) { int id = (int)objectContainer.GetID(obj); IObjectInfo objectInfo = objectContainer.GetObjectInfo(obj); ObjectContainerBase container = (ObjectContainerBase)objectContainer; Transaction trans = container.Transaction; ByteArrayBuffer buffer = container.ReadBufferById(trans, id); UnmarshallingContext context = new UnmarshallingContext(trans, (ObjectReference)objectInfo , Const4.Transient, false); context.Buffer(buffer); context.PersistentObject(obj); context.ActivationDepth(new LegacyActivationDepth(0)); context.Read(); return context.HandlerVersion(); }
public void ActivateAspects(UnmarshallingContext context) { BooleanByRef schemaUpdateDetected = new BooleanByRef(); ContextState savedState = context.SaveState(); ITraverseAspectCommand command = new _MarshallingInfoTraverseAspectCommand_63(context , schemaUpdateDetected, EnsureFieldList(context)); // TODO: cant the aspect handle it itself? // Probably no because old aspect versions might not be able // to handle null... TraverseAllAspects(context, command); if (schemaUpdateDetected.value) { context.RestoreState(savedState); command = new _MarshallingInfoTraverseAspectCommand_94(context, EnsureFieldList(context )); TraverseAllAspects(context, command); } }
private object WriteAndRead(object obj) { var imaginativeID = 500; var @ref = new ObjectReference(ClassMetadataForObject(obj), imaginativeID ); @ref.SetObject(obj); var marshallingContext = new MarshallingContext(Trans(), @ref, Container ().UpdateDepthProvider().ForDepth(int.MaxValue), true); Handlers4.Write(@ref.ClassMetadata().TypeHandler(), marshallingContext, obj); var pointer = marshallingContext.AllocateSlot(); var buffer = marshallingContext.ToWriteBuffer(pointer); buffer.Seek(0); // String str = new String(buffer._buffer); // System.out.println(str); var unmarshallingContext = new UnmarshallingContext(Trans(), @ref , Const4.AddToIdTree, false); unmarshallingContext.Buffer(buffer); unmarshallingContext.ActivationDepth(new LegacyActivationDepth(5)); return unmarshallingContext.Read(); }
internal virtual void InstantiateFields(UnmarshallingContext context) { var handler = CorrectHandlerVersion(context); Handlers4.Activate(context, handler); }
private object InstantiateWithCustomTypeHandlerIfEnabled(UnmarshallingContext context ) { if (!_customTypeHandlerAspect.IsEnabledOn(context)) { return InstantiateForVersionWithoutCustomTypeHandler(context); } return InstantiateWithCustomTypeHandler(context); }
public override void Activate(UnmarshallingContext context) { object obj = Read(context); // Activation of members is necessary on purpose here. // Classes like Hashtable need fully activated members // to be able to calculate hashCode() if (obj != null) { context.Container().Activate(context.Transaction(), obj, context.ActivationDepth( )); } SetOn(context.Transaction(), context.PersistentObject(), obj); }
public _IClosure4_110(TypeHandlerAspect _enclosing, UnmarshallingContext context) { this._enclosing = _enclosing; this.context = context; }
public virtual void AttemptUpdate(UnmarshallingContext context) { if (!Updating()) { IncrementOffset(context); return; } int savedOffset = context.Offset(); try { object toSet = context.Read(GetHandler()); if (toSet != null) { Set(context.PersistentObject(), toSet); } } catch (Exception) { // FIXME: COR-547 Diagnostics here please. context.Buffer().Seek(savedOffset); IncrementOffset(context); } }
public _MarshallingInfoTraverseAspectCommand_63(UnmarshallingContext context, BooleanByRef schemaUpdateDetected, IMarshallingInfo baseArg1) : base(baseArg1) { this.context = context; this.schemaUpdateDetected = schemaUpdateDetected; }
public object Get(Transaction trans, object onObject) { if (_containingClass == null) { return null; } ObjectContainerBase container = Container(); if (container == null) { return null; } lock (container.Lock()) { // FIXME: The following is not really transactional. // This will work OK for normal C/S and for // single local mode but the transaction will // be wrong for MTOC. if (trans == null) { trans = container.Transaction; } container.CheckClosed(); ObjectReference @ref = trans.ReferenceForObject(onObject); if (@ref == null) { return null; } int id = @ref.GetID(); if (id <= 0) { return null; } UnmarshallingContext context = new UnmarshallingContext(trans, @ref, Const4.AddToIdTree , false); context.ActivationDepth(new LegacyActivationDepth(1)); return context.ReadFieldValue(this); } }
public _IClosure4_2055(IInstantiatingTypeHandler customTypeHandler, UnmarshallingContext context) { this.customTypeHandler = customTypeHandler; this.context = context; }
public object Read(Db4objects.Db4o.Internal.Transaction trans, ByteArrayBuffer buffer , object obj, IActivationDepth instantiationDepth, int addToIDTree, bool checkIDTree ) { UnmarshallingContext context = new UnmarshallingContext(trans, buffer, this, addToIDTree , checkIDTree); context.PersistentObject(obj); context.ActivationDepth(instantiationDepth); return context.Read(); }
public virtual object ReadPrefetch(Db4objects.Db4o.Internal.Transaction trans, ByteArrayBuffer buffer, int addToIDTree) { UnmarshallingContext context = new UnmarshallingContext(trans, buffer, this, addToIDTree , false); context.ActivationDepth(new FixedActivationDepth(1, ActivationMode.Prefetch)); return context.Read(); }
internal override void InstantiateFields(UnmarshallingContext context) { throw new NotImplementedException(); }
public override object InstantiateTransient(UnmarshallingContext context) { return Handlers4.ReadValueType(context, CorrectHandlerVersion(context)); }
public override object Instantiate(UnmarshallingContext context) { var obj = context.PersistentObject(); if (obj == null) { obj = context.Read(TypeHandler()); context.SetObjectWeak(obj); } context.SetStateClean(); return obj; }
private object InstantiateForVersionWithoutCustomTypeHandler(UnmarshallingContext context) { var oldVersionConstructor = CreateConstructor(null); if (null == oldVersionConstructor) { throw new InvalidOperationException(); } return oldVersionConstructor.Apply(context); }
public abstract void Activate(UnmarshallingContext context);
private object InstantiateWithCustomTypeHandler(UnmarshallingContext context) { var contextState = context.SaveState(); try { var fieldHasValue = SeekToField(context, _customTypeHandlerAspect); if (!fieldHasValue) { context.RestoreState(contextState); return InstantiateForVersionWithoutCustomTypeHandler(context); } var customTypeHandler = (IInstantiatingTypeHandler) _customTypeHandlerAspect ._typeHandler; return context.SlotFormat().DoWithSlotIndirection(context, new _IClosure4_2055(customTypeHandler , context)); } finally { context.RestoreState(contextState); } }
private UnmarshallingContext DescendMarshallingContext(Transaction trans, ObjectReference @ref) { UnmarshallingContext context = new UnmarshallingContext(trans, @ref, Const4.AddToIdTree , false); context.ActivationDepth(ActivationDepthProvider().ActivationDepth(1, ActivationMode .Activate)); return context; }
public virtual object Instantiate(UnmarshallingContext context) { // overridden in PrimitiveTypeMetadata // never called for primitive YapAny // FIXME: [TA] no longer necessary? // context.adjustInstantiationDepth(); var obj = context.PersistentObject(); var instantiating = (obj == null); if (instantiating) { obj = InstantiateObject(context); if (obj == null) { return null; } ShareTransaction(obj, context.Transaction()); ShareObjectReference(obj, context.ObjectReference()); OnInstantiate(context, obj); if (context.ActivationDepth().Mode().IsPrefetch()) { context.ObjectReference().SetStateDeactivated(); return obj; } if (!context.ActivationDepth().RequiresActivation()) { context.ObjectReference().SetStateDeactivated(); return obj; } return Activate(context); } if (ActivatingActiveObject(context.ActivationDepth().Mode(), context.ObjectReference ())) { var child = context.ActivationDepth().Descend(this); if (child.RequiresActivation()) { CascadeActivation(new ActivationContext4(context.Transaction(), obj, child)); } return obj; } return Activate(context); }
public override void Activate(UnmarshallingContext context) { if (!CheckAlive(context)) { return; } if (!ShouldStoreField()) { IncrementOffset(context); return; } object toSet = Read(context); InformAboutTransaction(toSet, context.Transaction()); Set(context.PersistentObject(), toSet); }
public override object Instantiate(UnmarshallingContext context) { object @object = new object(); OnInstantiate(context, @object); return @object; }
protected void OnInstantiate(UnmarshallingContext context, object obj) { context.SetObjectWeak(obj); context.Transaction().ReferenceSystem().AddExistingReference(context.ObjectReference ()); ObjectOnInstantiate(context.Transaction(), context.ObjectReference()); }
public override void Activate(UnmarshallingContext context) { context.ObjectReference().ProduceVirtualAttributes(); Instantiate1(context); }
public virtual object InstantiateTransient(UnmarshallingContext context) { // overridden in YapClassPrimitive // never called for primitive YapAny var obj = InstantiateObject(context); if (obj == null) { return null; } context.Container().Peeked(context.ObjectId(), obj); if (context.ActivationDepth().RequiresActivation()) { InstantiateFields(context); } return obj; }
public _MarshallingInfoTraverseAspectCommand_94(UnmarshallingContext context, IMarshallingInfo baseArg1) : base(baseArg1) { this.context = context; }
private object Activate(UnmarshallingContext context) { var obj = context.PersistentObject(); var objectReference = context.ObjectReference(); if (!ObjectCanActivate(context.Transaction(), obj)) { objectReference.SetStateDeactivated(); return obj; } objectReference.SetStateClean(); if (context.ActivationDepth().RequiresActivation()) { InstantiateFields(context); } ObjectOnActivate(context.Transaction(), objectReference); return obj; }
public static void Activate(UnmarshallingContext context, ITypeHandler4 handler) { if (handler is IReferenceTypeHandler) { ((IReferenceTypeHandler)handler).Activate(context); } }
private object InstantiateObject(UnmarshallingContext context) { var obj = _constructor.Apply(context); context.PersistentObject(obj); return obj; }