private static IOid GetOid(XElement node, string typeName)
        {
            string[] values = node.Attribute("id").Value.Split(':');

            if (values.Count() <= 0 || values.Count() > 2)
            {
                return(null);
            }

            long id  = Convert.ToInt64(values[0], 16);
            IOid oid = SerialOid.CreatePersistent(id, typeName);

            if (values.Count() == 2)
            {
                oid = new AggregateOid(oid, values[1], typeName);
            }

            return(oid);
        }
Example #2
0
        public INakedObjectAdapter CreateAggregatedAdapter(INakedObjectAdapter parent, string fieldId, object obj)
        {
            GetAdapterFor(obj);

            IOid oid = new AggregateOid(metamodel, parent.Oid, fieldId, obj.GetType().FullName);
            INakedObjectAdapter adapterFor = GetAdapterFor(oid);

            if (adapterFor == null || adapterFor.Object != obj)
            {
                if (adapterFor != null)
                {
                    RemoveAdapter(adapterFor);
                }
                adapterFor = CreateAdapter(obj, oid, null);
                adapterFor.OptimisticLock = new NullVersion();
            }
            Assert.AssertNotNull(adapterFor);
            return(adapterFor);
        }
        private static INakedObject RestoreInline(this INakedObjectsFramework framework, AggregateOid aggregateOid)
        {
            IOid             parentOid = aggregateOid.ParentOid;
            INakedObject     parent    = framework.RestoreObject(parentOid);
            IAssociationSpec assoc     = ((IObjectSpec)parent.Spec).Properties.Where((p => p.Id == aggregateOid.FieldName)).Single();

            return(assoc.GetNakedObject(parent));
        }
        private static INakedObject CreateAggregatedAdapter(INakedObject parent, string fieldId, object obj) {
            NakedObjectsContext.ObjectPersistor.GetAdapterFor(obj);

            IOid oid = new AggregateOid(parent.Oid, fieldId, obj.GetType().FullName);
            INakedObject adapterFor = NakedObjectsContext.ObjectPersistor.GetAdapterFor(oid);
            if (adapterFor == null || adapterFor.Object != obj) {
                if (adapterFor != null) {
                    NakedObjectsContext.ObjectPersistor.RemoveAdapter(adapterFor);
                }
                adapterFor = CreateAdapter(oid, obj);
                adapterFor.OptimisticLock = new NullVersion();
            }
            Assert.AssertNotNull(adapterFor);
            return adapterFor;
        }
        private static IOid GetOid(XElement node, string typeName) {
            string[] values = node.Attribute("id").Value.Split(':');

            if (values.Count() <= 0 || values.Count() > 2) {
                return null;
            }

            long id = Convert.ToInt64(values[0], 16);
            IOid oid = SerialOid.CreatePersistent(id, typeName);

            if (values.Count() == 2) {
                oid = new AggregateOid(oid, values[1], typeName);
            }

            return oid;
        }