private static INakedObjectAdapter RestoreInline(this INakedObjectsFramework framework, IAggregateOid aggregateOid)
        {
            IOid parentOid             = aggregateOid.ParentOid;
            INakedObjectAdapter parent = framework.RestoreObject(parentOid);
            IAssociationSpec    assoc  = parent.GetObjectSpec().Properties.Where((p => p.Id == aggregateOid.FieldName)).Single();

            return(assoc.GetNakedObject(parent));
        }
예제 #2
0
        public virtual FileContentResult GetFile(string Id, string PropertyId)
        {
            INakedObject     target = NakedObjectsContext.GetNakedObjectFromId(Id);
            IAssociationSpec assoc  = ((IObjectSpec)target.Spec).Properties.Single(a => a.Id == PropertyId);
            var domainObject        = assoc.GetNakedObject(target).GetDomainObject();

            return(AsFile(domainObject));
        }
        /// <summary>
        ///     Removes an existing object reference from the specified field. Mirrors the 'Remove Reference' menu
        ///     option that each object field offers by default.
        /// </summary>
        public ITestProperty ClearObject()
        {
            AssertIsVisible();
            AssertIsModifiable();
            ResetLastMessage();

            Assert.IsFalse(field.ReturnSpec.IsParseable, "Clear(..) not allowed on value target field; use SetValue(..) instead");

            var nakedObjectAdapter = field.GetNakedObject(owningObject.NakedObject);

            if (nakedObjectAdapter != null)
            {
                var spec = field as IOneToOneAssociationSpec;
                if (spec != null)
                {
                    spec.SetAssociation(owningObject.NakedObject, null);
                }
                else
                {
                    Assert.Fail("Clear(..) not allowed on collection target field");
                }
            }

            return(this);
        }
        public int CountField(INakedObjectAdapter nakedObjectAdapter, string field)
        {
            var spec = nakedObjectAdapter.Spec as IObjectSpec;

            Trace.Assert(spec != null);

            IAssociationSpec associationSpec = spec.Properties.Single(x => x.Id == field);

            if (nakedObjectAdapter.Spec.IsViewModel)
            {
                INakedObjectAdapter collection = associationSpec.GetNakedObject(nakedObjectAdapter);
                return(collection.GetCollectionFacetFromSpec().AsEnumerable(collection, nakedObjectManager).Count());
            }

            return(objectStore.CountField(nakedObjectAdapter, associationSpec));
        }
예제 #5
0
        public static object GetVersion(this INakedObjectAdapter nakedObjectAdapter, INakedObjectManager manager)
        {
            IAssociationSpec versionProperty = nakedObjectAdapter.GetVersionProperty();

            if (versionProperty != null)
            {
                object version = versionProperty.GetNakedObject(nakedObjectAdapter).GetDomainObject();

                if (version is DateTime)
                {
                    return(((DateTime)version).StripMillis());
                }
                return(version);
            }

            return(null);
        }
        public int CountField(INakedObject nakedObject, string field)
        {
            Log.DebugFormat("CountField nakedObject: {0} field: {1}", nakedObject, field);

            var spec = nakedObject.Spec as IObjectSpec;

            Trace.Assert(spec != null);

            IAssociationSpec associationSpec = spec.Properties.Single(x => x.Id == field);

            if (nakedObject.Spec.IsViewModel)
            {
                INakedObject collection = associationSpec.GetNakedObject(nakedObject);
                return(collection.GetCollectionFacetFromSpec().AsEnumerable(collection, nakedObjectManager).Count());
            }

            return(objectStore.CountField(nakedObject, associationSpec));
        }
        public void ResolveField(INakedObjectAdapter nakedObjectAdapter, IAssociationSpec field)
        {
            if (field.ReturnSpec.HasNoIdentity)
            {
                return;
            }
            INakedObjectAdapter reference = field.GetNakedObject(nakedObjectAdapter);

            if (reference == null || reference.ResolveState.IsResolved())
            {
                return;
            }
            if (!reference.ResolveState.IsPersistent())
            {
                return;
            }

            // don't log object - its ToString() may use the unresolved field or unresolved collection
            objectStore.ResolveField(nakedObjectAdapter, field);
        }
        public void ResolveField(INakedObject nakedObject, IAssociationSpec field)
        {
            Log.DebugFormat("ResolveField nakedObject: {0} field: {1}", nakedObject, field);
            if (field.ReturnSpec.HasNoIdentity)
            {
                return;
            }
            INakedObject reference = field.GetNakedObject(nakedObject);

            if (reference == null || reference.ResolveState.IsResolved())
            {
                return;
            }
            if (!reference.ResolveState.IsPersistent())
            {
                return;
            }
            if (Log.IsInfoEnabled)
            {
                // don't log object - its ToString() may use the unresolved field or unresolved collection
                Log.Info("resolve field " + nakedObject.Spec.ShortName + "." + field.Id + ": " + reference.Spec.ShortName + " " + reference.ResolveState.CurrentState.Code + " " + reference.Oid);
            }
            objectStore.ResolveField(nakedObject, field);
        }
예제 #9
0
        public IObjectFacade GetValue(IObjectFacade target)
        {
            INakedObjectAdapter result = assoc.GetNakedObject(((ObjectFacade)target).WrappedNakedObject);

            return(ObjectFacade.Wrap(result, FrameworkFacade, framework));
        }
        public INakedObjectSurface GetNakedObject(INakedObjectSurface target)
        {
            INakedObject result = assoc.GetNakedObject(((NakedObjectWrapper)target).WrappedNakedObject);

            return(NakedObjectWrapper.Wrap(result, Surface, framework));
        }