public static string GetObjectId(this INakedObjectsFramework framework, object model)
        {
            Assert.AssertFalse("Cannot get Adapter for Adapter", model is INakedObjectAdapter);
            INakedObjectAdapter nakedObject = framework.GetNakedObject(model);

            return(framework.GetObjectId(nakedObject));
        }
예제 #2
0
        private INakedObjectAdapter GetValue(IActionParameterFacade parm, object rawValue)
        {
            if (rawValue == null || rawValue is string && string.IsNullOrEmpty(rawValue as string))
            {
                return(null);
            }

            if (parm.Specification.IsParseable)
            {
                return(parm.WrappedSpec().Spec.GetFacet <IParseableFacet>().ParseTextEntry((string)rawValue, framework.NakedObjectManager));
            }
            var collectionParm = parm.WrappedSpec() as IOneToManyActionParameterSpec;

            if (collectionParm != null && collectionParm.ElementSpec.IsParseable)
            {
                var stringArray = rawValue as string[];
                if (stringArray == null || !stringArray.Any())
                {
                    return(null);
                }

                var eSpec = collectionParm.ElementSpec;

                var objectArray = stringArray.Select(i => i == null ? null : eSpec.GetFacet <IParseableFacet>().ParseTextEntry(i, framework.NakedObjectManager).Object).Where(o => o != null).ToArray();

                if (!objectArray.Any())
                {
                    return(null);
                }

                var typedArray = Array.CreateInstance(objectArray.First().GetType(), objectArray.Length);

                Array.Copy(objectArray, typedArray, typedArray.Length);

                return(framework.GetNakedObject(typedArray));
            }

            return(framework.GetNakedObject(rawValue));
        }
예제 #3
0
 private static INakedObject SafeGetNakedObjectFromId(string id, INakedObjectsFramework framework)
 {
     try {
         return(framework.GetNakedObjectFromId(id));
     }
     catch (Exception) {
         // create a NakedObject just to carry the 'Destroyed' state
         var no = framework.GetNakedObject(new object());
         no.ResolveState.Handle(Events.StartResolvingEvent);
         no.ResolveState.Handle(Events.DestroyEvent);
         return(no);
     }
 }
        public ParameterContext[] GetParameterContexts(INakedObjectsFramework framework)
        {
            if (parameterContexts == null)
            {
                parameterContexts = Action.Parameters.Where(Filter).Select(p => new ParameterContext(EmbeddedInObject, Target, Action, p, true)).ToArray();

                if (ParameterValues != null)
                {
                    foreach (ParameterContext pc in parameterContexts)
                    {
                        object value;
                        if (ParameterValues.TryGetValue(pc.Parameter.Id, out value))
                        {
                            pc.IsHidden    = true;
                            pc.CustomValue = framework.GetNakedObject(value);
                        }
                    }
                }
            }

            return(parameterContexts);
        }
        public static string GetObjectTypeName(this INakedObjectsFramework framework, object model)
        {
            INakedObjectAdapter nakedObject = framework.GetNakedObject(model);

            return(nakedObject.Spec.ShortName);
        }
예제 #6
0
        public IObjectFacade[] GetChoices(IObjectFacade target, IDictionary <string, object> parameterNameValues)
        {
            var oneToOneFeature = assoc as IOneToOneFeatureSpec;
            var pnv             = parameterNameValues == null ? null : parameterNameValues.ToDictionary(kvp => kvp.Key, kvp => framework.GetNakedObject(kvp.Value));

            return(oneToOneFeature != null?oneToOneFeature.GetChoices(((ObjectFacade)target).WrappedNakedObject, pnv).Select(no => ObjectFacade.Wrap(no, FrameworkFacade, framework)).Cast <IObjectFacade>().ToArray() : null);
        }
예제 #7
0
        public static void AddObjectToSession <T>(this HttpSessionStateBase session, INakedObjectsFramework framework, string key, T domainObject) where T : class
        {
            INakedObject nakedObject = framework.GetNakedObject(domainObject);

            session.Add(key, (nakedObject.ResolveState.IsTransient() ? (object)domainObject : framework.GetObjectId(domainObject)));
        }
예제 #8
0
        public static void AddToCache(this HttpSessionStateBase session, INakedObjectsFramework framework, object domainObject, ObjectFlag flag = ObjectFlag.None)
        {
            INakedObject nakedObject = framework.GetNakedObject(domainObject);

            session.AddToCache(framework, nakedObject, flag);
        }