Example #1
0
        private bool CollectExecutors(HandlerInvokeGraph invokeGraph, EntityNode entityNode, int argumentIndex)
        {
            HandlerArgument argument = this.HandlerArguments[argumentIndex];

            if (argumentIndex == (this.HandlerArguments.Count - 1))
            {
                HandlerExecutor item = this.CreateExecutor();
                item.ArgumentForMethod[argumentIndex + 1] = entityNode.invokeArgument;
                this.handlerExecutors.Add(item);
                return(true);
            }
            ArgumentNode      argumentNode = invokeGraph.ArgumentNodes[argumentIndex + 1];
            List <EntityNode> source       = (argument.Collection || argumentNode.linkBreak) ? argumentNode.entityNodes : entityNode.nextArgumentEntityNodes;
            int  count = this.handlerExecutors.Count;
            bool flag  = false;

            for (int i = 0; i < source.Count <EntityNode>(); i++)
            {
                if (this.CollectExecutors(invokeGraph, source[i], argumentIndex + 1))
                {
                    if (flag && !argumentNode.argument.Combine)
                    {
                        throw new IllegalCombineException(this.Handler, argumentNode);
                    }
                    flag = true;
                }
            }
            for (int j = count; j < this.handlerExecutors.Count; j++)
            {
                this.handlerExecutors[j].ArgumentForMethod[argumentIndex + 1] = entityNode.invokeArgument;
            }
            return(flag);
        }
Example #2
0
        public void ConvertToCollection()
        {
            this.entityNodes.Clear();
            EntityNode item = Cache.entityNode.GetInstance().Init(this, null);

            item.invokeArgument = this.GetCollection();
            this.entityNodes.Add(item);
        }
Example #3
0
        public bool TryGetEntityNode(Entity entity, out EntityNode entityNode)
        {
            NodeClassInstanceDescription classInstanceDescription = this.argument.ClassInstanceDescription;

            entityNode = null;
            if (!((EntityInternal)entity).CanCast(classInstanceDescription.NodeDescription))
            {
                return(false);
            }
            entityNode = Cache.entityNode.GetInstance().Init(this, entity);
            return(true);
        }
Example #4
0
 protected void FillEntityNodesByJoin(JoinType join, EntityNode fromEntityNode, ArgumentNode toArgumentNode, Entity contextEntity)
 {
     toArgumentNode.filled = true;
     Collections.Enumerator <Entity> enumerator = Collections.GetEnumerator <Entity>(join.GetEntities(Flow.Current.NodeCollector, toArgumentNode.argument.NodeDescription, fromEntityNode.entity));
     while (enumerator.MoveNext())
     {
         EntityNode node;
         Entity     current = enumerator.Current;
         if (((contextEntity == null) || contextEntity.Equals(current)) && toArgumentNode.TryGetEntityNode(current, out node))
         {
             node.nextArgumentEntityNodes.Add(fromEntityNode);
             toArgumentNode.entityNodes.Add(node);
         }
     }
 }
Example #5
0
 public void ConvertToOptional()
 {
     if (this.IsEmpty())
     {
         this.linkBreak = true;
         EntityNode item = Cache.entityNode.GetInstance().Init(this, null);
         item.ConvertToOptional();
         this.entityNodes.Add(item);
     }
     else
     {
         for (int i = 0; i < this.entityNodes.Count; i++)
         {
             this.entityNodes[i].ConvertToOptional();
         }
     }
 }
Example #6
0
 private void FillEntityNodesByJoin(JoinType join, ICollection <Entity> contextEntities, EntityNode fromEntityNode, ArgumentNode toArgumentNode)
 {
     Collections.Enumerator <Entity> enumerator = Collections.GetEnumerator <Entity>(join.GetEntities(Flow.Current.NodeCollector, toArgumentNode.argument.NodeDescription, fromEntityNode.entity));
     while (enumerator.MoveNext())
     {
         EntityNode node;
         Entity     current = enumerator.Current;
         if (!this.FilterByContext(toArgumentNode.argument, current, contextEntities) && toArgumentNode.TryGetEntityNode(current, out node))
         {
             toArgumentNode.entityNodes.Add(node);
             fromEntityNode.nextArgumentEntityNodes.Add(node);
         }
     }
 }