//Creates a menu based on the definition in the object's Menu method
        public override void CreateMenu(IMetamodelBuilder metamodel)
        {
            var menu = new MenuImpl(metamodel, method.DeclaringType, false, GetMenuName(Spec));

            InvokeUtils.InvokeStatic(method, new object[] { menu });
            Menu = menu;
        }
Exemple #2
0
        public static object CallDynamicInvokeMethod(
            object thisPtr,
            IntPtr methodToCall,
            object thisPtrDynamicInvokeMethod,
            IntPtr dynamicInvokeHelperMethod,
            IntPtr dynamicInvokeHelperGenericDictionary,
            object defaultParametersContext,
            object[] parameters,
            BinderBundle binderBundle,
            bool wrapInTargetInvocationException,
            bool invokeMethodHelperIsThisCall,
            bool methodToCallIsThisCall)
        {
            object result = InvokeUtils.CallDynamicInvokeMethod(
                thisPtr,
                methodToCall,
                thisPtrDynamicInvokeMethod,
                dynamicInvokeHelperMethod,
                dynamicInvokeHelperGenericDictionary,
                defaultParametersContext,
                parameters,
                binderBundle,
                wrapInTargetInvocationException,
                invokeMethodHelperIsThisCall,
                methodToCallIsThisCall);

            System.Diagnostics.DebugAnnotations.PreviousCallContainsDebuggerStepInCode();
            return(result);
        }
Exemple #3
0
        public static dynamic GetQueryableOfDerivedType(this EntityObjectStore.LocalContext context, Type type)
        {
            Type       mostBaseType = context.GetMostBaseType(type);
            MethodInfo mi           = typeof(ObjectContextUtils).GetMethod("GetObjectSetOfType").MakeGenericMethod(type, mostBaseType);

            return(InvokeUtils.InvokeStatic(mi, new object[] { context }));
        }
Exemple #4
0
        public static object CallDynamicInvokeMethod(object thisPtr, IntPtr methodToCall, object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, string defaultValueString, object[] parameters, bool invokeMethodHelperIsThisCall, bool methodToCallIsThisCall)
        {
            object result = InvokeUtils.CallDynamicInvokeMethod(thisPtr, methodToCall, thisPtrDynamicInvokeMethod, dynamicInvokeHelperMethod, dynamicInvokeHelperGenericDictionary, defaultValueString, parameters, invokeMethodHelperIsThisCall, methodToCallIsThisCall);

            System.Diagnostics.DebugAnnotations.PreviousCallContainsDebuggerStepInCode();
            return(result);
        }
        //Creates a menu based on the definition in the object's Menu method
        public override void CreateMenu(IMetamodelBuilder metamodel)
        {
            MethodInfo m    = GetType().GetMethod("CreateTypedMenu").MakeGenericMethod(method.DeclaringType);
            var        menu = (MenuImpl)m.Invoke(this, new object[] { metamodel, GetMenuName(Spec()) });

            InvokeUtils.InvokeStatic(method, new object[] { menu });
            Menu = menu;
        }
Exemple #6
0
 public override string InvalidReason(INakedObject target, INakedObject proposedValue)
 {
     if (proposedValue != null)
     {
         return((string)InvokeUtils.Invoke(method, target, new[] { proposedValue }));
     }
     return(null);
 }
Exemple #7
0
        public static object CreateObject(this EntityObjectStore.LocalContext context, Type type)
        {
            object objectSet = context.GetObjectSet(type);
            var    methods   = objectSet.GetType().GetMethods();
            var    mi        = methods.Single(m => m.Name == "CreateObject" && m.IsGenericMethod).MakeGenericMethod(type);

            return(InvokeUtils.Invoke(mi, objectSet, null));
        }
Exemple #8
0
        public static IQueryable <TDerived> GetObjectSetOfType <TDerived, TBase>(this EntityObjectStore.LocalContext context) where TDerived : TBase
        {
            MethodInfo mi = context.WrappedObjectContext.GetType().GetMethod("CreateObjectSet", Type.EmptyTypes).MakeGenericMethod(typeof(TBase));
            var        os = (IQueryable <TBase>)InvokeUtils.Invoke(mi, context.WrappedObjectContext, null);

            ((ObjectQuery)os).MergeOption = context.DefaultMergeOption;
            return(os.OfType <TDerived>());
        }
 public override void SetProperty(INakedObjectAdapter nakedObjectAdapter, INakedObjectAdapter value, ITransactionManager transactionManager, ISession session, ILifecycleManager lifecycleManager)
 {
     try {
         property.SetValue(nakedObjectAdapter.GetDomainObject(), value.GetDomainObject(), null);
     }
     catch (TargetInvocationException e) {
         InvokeUtils.InvocationException("Exception executing " + property, e);
     }
 }
 public void InitProperty(INakedObject nakedObject, INakedObject value)
 {
     try {
         property.SetValue(nakedObject.GetDomainObject(), value.GetDomainObject(), null);
     }
     catch (TargetInvocationException e) {
         InvokeUtils.InvocationException("Exception executing " + property, e);
     }
 }
Exemple #11
0
 public override void SetProperty(INakedObject nakedObject, INakedObject value, ITransactionManager transactionManager)
 {
     try {
         property.SetValue(nakedObject.GetDomainObject(), value.GetDomainObject(), null);
     }
     catch (TargetInvocationException e) {
         InvokeUtils.InvocationException("Exception executing " + property, e);
     }
 }
Exemple #12
0
        public string HiddenReason(INakedObject nakedObject)
        {
            if (nakedObject == null)
            {
                return(null);
            }
            var isHidden = (bool)InvokeUtils.Invoke(method, nakedObject);

            return(isHidden ? Resources.NakedObjects.Hidden : null);
        }
 public object GetProperty(INakedObject nakedObject)
 {
     try {
         return(propertyMethod.GetValue(nakedObject.GetDomainObject(), null));
     }
     catch (TargetInvocationException e) {
         InvokeUtils.InvocationException("Exception executing " + propertyMethod, e);
         return(null);
     }
 }
Exemple #14
0
 public string InvalidReason(INakedObjectAdapter target, INakedObjectAdapter[] proposedArguments)
 {
     if (methodDelegate != null)
     {
         return((string)methodDelegate(target.GetDomainObject(), proposedArguments.Select(no => no.GetDomainObject()).ToArray()));
     }
     //Fall back (e.g. if method has > 6 params) on reflection...
     Log.WarnFormat("Invoking validate method via reflection as no delegate {0}.{1}", target, method);
     return((string)InvokeUtils.Invoke(method, target, proposedArguments));
 }
 private static void SetValue(PropertyInfo property, object injectee, object value)
 {
     if (property != null)
     {
         try {
             property.SetValue(injectee, value, null);
         }
         catch (TargetInvocationException e) {
             InvokeUtils.InvocationException("Exception executing " + property, e);
         }
     }
 }
Exemple #16
0
        public override INakedObject Invoke(INakedObject inObject, INakedObject[] parameters, ILifecycleManager lifecycleManager, IMetamodelManager manager, ISession session, INakedObjectManager nakedObjectManager)
        {
            if (parameters.Length != paramCount)
            {
                Log.Error(actionMethod + " requires " + paramCount + " parameters, not " + parameters.Length);
            }

            object       result        = InvokeUtils.Invoke(actionMethod, inObject, parameters);
            INakedObject adaptedResult = nakedObjectManager.CreateAdapter(result, null, null);

            Log.DebugFormat("Action result {0}", adaptedResult);
            return(adaptedResult);
        }
Exemple #17
0
        protected virtual void InstallFixture(object fixture)
        {
            var property = fixture.GetType().GetProperty("Service");

            SetValue(property, fixture, fixtureServices);

            var installMethod = GetInstallMethod(fixture);

            try {
                installMethod.Invoke(fixture, new object[0]);
            }
            catch (TargetInvocationException e) {
                InvokeUtils.InvocationException("Exception executing " + installMethod, e);
            }
        }
 public object[] GetCompletions(INakedObject inObject, string autoCompleteParm)
 {
     try {
         object autoComplete = InvokeUtils.Invoke(method, inObject.GetDomainObject(), new object[] { autoCompleteParm });
         var    complete     = autoComplete as IQueryable;
         if (complete != null)
         {
             return(complete.Take(PageSize).ToArray());
         }
         throw new NakedObjectDomainException("Must return IQueryable from autoComplete method: " + method.Name);
     }
     catch (ArgumentException ae) {
         string msg = string.Format("autoComplete exception: {0} has mismatched parameter type - must be string", method.Name);
         throw new InvokeException(msg, ae);
     }
 }
Exemple #19
0
 public object[] GetChoices(INakedObject inObject, IDictionary <string, INakedObject> parameterNameValues)
 {
     INakedObject[] parms = FacetUtils.MatchParameters(parameterNames, parameterNameValues);
     try {
         object options    = InvokeUtils.Invoke(method, inObject, parms);
         var    enumerable = options as IEnumerable;
         if (enumerable != null)
         {
             return(enumerable.Cast <object>().ToArray());
         }
         throw new NakedObjectDomainException("Must return IEnumerable from choices method: " + method.Name);
     }
     catch (ArgumentException ae) {
         string msg = string.Format("Choices exception: {0} has mismatched (ie type of parameter does not match type of property) parameter types", method.Name);
         throw new InvokeException(msg, ae);
     }
 }
        public override object[] GetChoices(INakedObject nakedObject, IDictionary <string, INakedObject> parameterNameValues)
        {
            INakedObject[] parms = FacetUtils.MatchParameters(parameterNames, parameterNameValues);

            try {
                var options = InvokeUtils.Invoke(choicesMethod, nakedObject, parms) as IEnumerable;
                if (options != null)
                {
                    return(options.Cast <object>().ToArray());
                }
                throw new NakedObjectDomainException("Must return IEnumerable from choices method: " + choicesMethod.Name);
            }
            catch (ArgumentException ae) {
                string msg = string.Format("Choices exception: {0} has mismatched (ie type of choices parameter does not match type of action parameter) parameter types", choicesMethod.Name);
                throw new InvokeException(msg, ae);
            }
        }
        public override INakedObjectAdapter Invoke(INakedObjectAdapter inObjectAdapter, INakedObjectAdapter[] parameters, ILifecycleManager lifecycleManager, IMetamodelManager manager, ISession session, INakedObjectManager nakedObjectManager, IMessageBroker messageBroker, ITransactionManager transactionManager)
        {
            if (parameters.Length != paramCount)
            {
                logger.LogError($"{ActionMethod} requires {paramCount} parameters, not {parameters.Length}");
            }

            object result;

            if (ActionDelegate != null)
            {
                result = ActionDelegate(inObjectAdapter.GetDomainObject(), parameters.Select(no => no.GetDomainObject()).ToArray());
            }
            else
            {
                logger.LogWarning($"Invoking action via reflection as no delegate {OnType}.{ActionMethod}");
                result = InvokeUtils.Invoke(ActionMethod, inObjectAdapter, parameters);
            }

            return(nakedObjectManager.CreateAdapter(result, null, null));
        }
Exemple #22
0
        public override INakedObjectAdapter Invoke(INakedObjectAdapter inObjectAdapter, INakedObjectAdapter[] parameters, INakedObjectsFramework framework)
        {
            if (parameters.Length != paramCount)
            {
                logger.LogError($"{ActionMethod} requires {paramCount} parameters, not {parameters.Length}");
            }

            object result;

            if (ActionDelegate != null)
            {
                result = ActionDelegate(inObjectAdapter.GetDomainObject(), parameters.Select(no => no.GetDomainObject()).ToArray());
            }
            else
            {
                logger.LogWarning($"Invoking action via reflection as no delegate {OnType}.{ActionMethod}");
                result = InvokeUtils.Invoke(ActionMethod, inObjectAdapter, parameters);
            }

            return(framework.NakedObjectManager.CreateAdapter(result, null, null));
        }
        public override INakedObjectAdapter Invoke(INakedObjectAdapter inObjectAdapter, INakedObjectAdapter[] parameters, ILifecycleManager lifecycleManager, IMetamodelManager manager, ISession session, INakedObjectManager nakedObjectManager, IMessageBroker messageBroker, ITransactionManager transactionManager)
        {
            if (parameters.Length != paramCount)
            {
                Log.Error(actionMethod + " requires " + paramCount + " parameters, not " + parameters.Length);
            }

            object result;

            if (actionDelegate != null)
            {
                result = actionDelegate(inObjectAdapter.GetDomainObject(), parameters.Select(no => no.GetDomainObject()).ToArray());
            }
            else
            {
                Log.WarnFormat("Invoking action via reflection as no delegate {0}.{1}", onType, actionMethod);
                result = InvokeUtils.Invoke(actionMethod, inObjectAdapter, parameters);
            }

            INakedObjectAdapter adaptedResult = nakedObjectManager.CreateAdapter(result, null, null);

            return(adaptedResult);
        }
 public override Tuple <object, TypeOfDefaultValue> GetDefault(INakedObject nakedObject)
 {
     // type safety is given by the reflector only identifying methods that match the
     // parameter type
     return(new Tuple <object, TypeOfDefaultValue>(InvokeUtils.Invoke(method, nakedObject), TypeOfDefaultValue.Explicit));
 }
Exemple #25
0
 public override string GetTitle(INakedObject nakedObject, INakedObjectManager nakedObjectManager)
 {
     return(InvokeUtils.Invoke(method, nakedObject) as string);
 }
Exemple #26
0
 public static Object CheckArgument(Object srcObject, RuntimeTypeHandle dstType)
 {
     return(InvokeUtils.CheckArgument(srcObject, dstType));
 }
Exemple #27
0
        public override string GetTitle(INakedObject nakedObject, INakedObjectManager nakedObjectManager)
        {
            object obj = InvokeUtils.Invoke(method, nakedObject);

            return(obj == null ? null : nakedObjectManager.CreateAdapter(obj, null, null).TitleString());
        }
Exemple #28
0
 public static object CheckArgument(object srcObject, RuntimeTypeHandle dstType, BinderBundle binderBundle)
 {
     return(InvokeUtils.CheckArgument(srcObject, dstType, binderBundle));
 }
Exemple #29
0
 // FieldInfo.SetValueDirect() has a completely different set of rules on how to coerce the argument from
 // the other Reflection api.
 public static object CheckArgumentForDirectFieldAccess(object srcObject, RuntimeTypeHandle dstType)
 {
     return(InvokeUtils.CheckArgument(srcObject, dstType.ToEETypePtr(), InvokeUtils.CheckArgumentSemantics.SetFieldDirect, binderBundle: null));
 }
Exemple #30
0
 public override void Invoke(INakedObject nakedObject, ISession session, ILifecycleManager lifecycleManager, IMetamodelManager metamodelManager)
 {
     InvokeUtils.Invoke(method, nakedObject);
 }