Exemplo n.º 1
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="context"></param>
 /// <param name="base"></param>
 /// <param name="property"></param>
 /// <returns></returns>
 public override bool IsReadOnly(ELContext context, object @base, object property)
 {
     return(true);
 }
Exemplo n.º 2
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="context"></param>
 /// <param name="arg"></param>
 /// <returns></returns>
 public override Type GetCommonPropertyType(ELContext context, object arg)
 {
     return(typeof(object));
 }
 public override bool isReadOnly(ELContext context, object @base, object property)
 {
     return(this.readOnly);
 }
Exemplo n.º 4
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="context"></param>
 /// <param name="arg1"></param>
 /// <param name="arg2"></param>
 /// <returns></returns>
 public override Type GetType(ELContext context, object arg1, object arg2)
 {
     return(typeof(object));
 }
Exemplo n.º 5
0
        private object GetValue(ELContext context, IVariableScope variableScope)
        {
            string expstr = ExpressionString;

            if ((VariableScopeElResolver.EXECUTION_KEY.Equals(expstr) && variableScope is IExecutionEntity) || (VariableScopeElResolver.TASK_KEY.Equals(expstr) && variableScope is ITaskEntity))
            {
                context.IsPropertyResolved = true;
                return(variableScope);
            }
            else if (VariableScopeElResolver.EXECUTION_KEY.Equals(expstr) && variableScope is ITaskEntity)
            {
                context.IsPropertyResolved = true;
                return(((ITaskEntity)variableScope).Execution);
            }
            else if (VariableScopeElResolver.LOGGED_IN_USER_KEY.Equals(expstr))
            {
                context.IsPropertyResolved = true;
                return(Authentication.AuthenticatedUser.Id);
            }

            List <string> sb = new List <string>();

            if (EXPR_PATTERN.IsMatch(expstr))
            {
                EXPR_PATTERN.Replace(expstr, (m) =>
                {
                    if (sb.Count == 0 && m.Index > 0)
                    {
                        sb.Add($"'{expstr.Substring(0, m.Index)}'");
                    }
                    var r = m.Result("$1");
                    sb.Add(r);
                    var nm = m.NextMatch();
                    if (nm.Success)
                    {
                        sb.Add($"'{expstr.Substring(m.Index + m.Length, nm.Index - (m.Index + m.Length))}'");
                    }
                    else
                    {
                        if (expstr.Length > (m.Index + m.Length))
                        {
                            sb.Add($"'{expstr.Substring(m.Index, expstr.Length - m.Index)}'");
                        }
                    }
                    return(r);
                });
            }
            else
            {
                return(expstr);
            }

            expstr = string.Join("+", sb);

            if (variableScope is IExecutionEntity execution)
            {
                ExpandoObject contextObject = new ExpandoObject();

                foreach (string key in execution.Variables.Keys)
                {
                    var    value = execution.Variables[key];
                    object obj   = ToObject(value);

                    (contextObject as IDictionary <string, object>).Add(key, obj);
                }

                return(Sys.Expressions.ExpressionManager.GetValue(contextObject, expstr, execution.Variables));
            }

            // property resolution (eg. bean.value) will be done by the
            // BeanElResolver (part of the CompositeElResolver)
            // It will use the bean resolved in this resolver as base.

            return(null);
        }
 public override IEnumerator <FeatureDescriptor> getFeatureDescriptors(ELContext context, object @base)
 {
     return(null);
 }
Exemplo n.º 7
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="context"></param>
 /// <param name="base"></param>
 /// <param name="method"></param>
 /// <param name="paramTypes"></param>
 /// <param name="params"></param>
 /// <returns></returns>
 public virtual object Invoke(ELContext context, object @base, object method, Type[] paramTypes, object[] @params)
 {
     return(null);
 }
Exemplo n.º 8
0
 /// <summary>
 /// If the base object is not null, returns the most general type that this resolver accepts for
 /// the property argument. Otherwise, returns null. Assuming the base is not null, this method
 /// will always return Object.class. This is because any object is accepted as a key and is
 /// coerced into a string.
 /// </summary>
 /// <param name="context">
 ///            The context of this evaluation. </param>
 /// <param name="base">
 ///            The bean to analyze. </param>
 /// <returns> null if base is null; otherwise Object.class. </returns>
 public override Type GetCommonPropertyType(ELContext context, object @base)
 {
     return(IsResolvable(@base) ? typeof(object) : null);
 }
Exemplo n.º 9
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="var1"></param>
 /// <param name="var2"></param>
 /// <param name="var3"></param>
 /// <param name="var4"></param>
 public abstract void SetValue(ELContext var1, object var2, object var3, object var4);
Exemplo n.º 10
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="var1"></param>
 /// <param name="base"></param>
 /// <param name="var3"></param>
 /// <returns></returns>
 public abstract bool IsReadOnly(ELContext var1, object @base, object var3);
Exemplo n.º 11
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="var1"></param>
 /// <param name="base"></param>
 /// <param name="property"></param>
 /// <returns></returns>
 public abstract object GetValue(ELContext var1, object @base, object property);
Exemplo n.º 12
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="var1"></param>
 /// <param name="base"></param>
 /// <param name="var3"></param>
 /// <returns></returns>
 public abstract Type GetType(ELContext var1, object @base, object var3);
Exemplo n.º 13
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="var1"></param>
 /// <param name="var2"></param>
 /// <returns></returns>
 public abstract Type GetCommonPropertyType(ELContext var1, object var2);