예제 #1
0
        public DynamicBlock(DBDefinition definition, params object[] args)
            : base((string)args[0], args[1] as IContainerBlockWeb)
        {
            createConnectors(definition.Connectors.ToArray());

            //no service is added because they are executed when a request is made
            this.definition = definition;
        }
예제 #2
0
        public override void Execute()
        {
            BlockHandle handle = new BlockHandle(id.ValueText);
            DBDefinition definition = new DBDefinition();

            foreach (DefBlockBodyItem bodyItem in body)
            {
                bodyItem.Fill(definition);
            }

            if (baseType.Handle != null)
            {
                definition.BaseType = baseType.Handle;
            }

            //register the dynamic block so in future commands
            //user can instantiate it using: block command
            ExecutionContext.Current.RegisterDynamicBlock(handle, definition);
        }
예제 #3
0
        public override void Fill(DBDefinition definition)
        {
            DBServiceDefinition serviceDef = new DBServiceDefinition();

            if (optArgList.HasValue)
            {
                foreach (Identifier argTitle in optArgList.Value)
                {
                    serviceDef.Args.Add(argTitle.ValueText);
                }
            }

            bool hasReturn = false;

            foreach (DefBlockServiceLine item in body)
            {
                DBSLineDefinition dbslid = item.getDefinition();
                serviceDef.Body.Add(dbslid);

                hasReturn = dbslid.IsReturn;
            }

            definition.Services[this.id.ValueText] = serviceDef;
        }
예제 #4
0
 public override void Fill(DBDefinition definition)
 {
     definition.Connectors.Add(id.ValueText);
 }
예제 #5
0
 //context is used to lookup values
 public virtual void Fill(DBDefinition definition)
 {
 }
예제 #6
0
 public void AddBlock(BlockHandle handle, DBDefinition blockDef)
 {
     blocks[handle] = blockDef;
 }
예제 #7
0
        public void RegisterDynamicBlock(BlockHandle handle, DBDefinition def)
        {
            if (parent != null)
            {
                //brokers are only kept at root level context
                parent.RegisterDynamicBlock(handle, def);
            }

            dynamicBlockBroker.AddBlock(handle, def);
        }