Example #1
0
        public IList <IPluginAction> PluginActions(IComPluginSource source, INamespaceItem ns)
        {
            var serializer     = new Dev2JsonSerializer();
            var comsController = CommunicationControllerFactory.CreateController("FetchComPluginActions");

            comsController.AddPayloadArgument(nameof(source), serializer.SerializeToBuilder(source));
            comsController.AddPayloadArgument("namespace", serializer.SerializeToBuilder(ns));
            var workspaceId = Connection.WorkspaceID;
            var result      = comsController.ExecuteCommand <ExecuteMessage>(Connection, workspaceId);

            if (result == null || result.HasError)
            {
                if (!Connection.IsConnected)
                {
                    ShowServerDisconnectedPopup();
                    return(new List <IPluginAction>());
                }
                if (result != null)
                {
                    throw new WarewolfSupportServiceException(result.Message.ToString(), null);
                }
                throw new WarewolfSupportServiceException(ErrorResource.ServiceDoesNotExist, null);
            }

            return(serializer.Deserialize <List <IPluginAction> >(result.Message.ToString()));
        }
Example #2
0
        public IList <IPluginAction> PluginActionsWithReturns(IPluginSource source, INamespaceItem ns)
        {
            var serializer     = new Dev2JsonSerializer();
            var comsController = CommunicationControllerFactory.CreateController("FetchPluginActionsWithReturnsTypes");
            var pluginActions  = GetPluginActions(source, ns, comsController, serializer);

            return(pluginActions);
        }
        public IList <IPluginConstructor> PluginConstructors(IPluginSource source, INamespaceItem ns)
        {
            Dev2JsonSerializer serializer = new Dev2JsonSerializer();
            var comsController            = CommunicationControllerFactory.CreateController("FetchPluginConstructors");

            comsController.AddPayloadArgument("source", serializer.SerializeToBuilder(source));
            comsController.AddPayloadArgument("namespace", serializer.SerializeToBuilder(ns));
            var workspaceId = Connection.WorkspaceID;
            var result      = comsController.ExecuteCommand <ExecuteMessage>(Connection, workspaceId);

            if (result == null || result.HasError)
            {
                if (!Connection.IsConnected)
                {
                    ShowServerDisconnectedPopup();
                    return(new List <IPluginConstructor>());
                }
                if (result != null)
                {
                    throw new WarewolfSupportServiceException(result.Message.ToString(), null);
                }
                throw new WarewolfSupportServiceException(ErrorResource.ServiceDoesNotExist, null);
            }
            var pluginConstructors = serializer.Deserialize <List <IPluginConstructor> >(result.Message.ToString());

            if (DataListSingleton.ActiveDataList != null)
            {
                if (DataListSingleton.ActiveDataList.ComplexObjectCollection != null)
                {
                    var objectCollection = DataListSingleton.ActiveDataList.ComplexObjectCollection;
                    pluginConstructors.AddRange(objectCollection.Select(objectItemModel => new PluginConstructor()
                    {
                        ConstructorName  = objectItemModel.Name,
                        IsExistingObject = true
                    }));
                }
            }

            return(pluginConstructors);
        }
 public ICollection <IPluginAction> GetActions(IComPluginSource source, INamespaceItem ns)
 {
     return(_queryProxy.PluginActions(source, ns).Where(a => a.Method != "GetType").ToList());
 }
Example #5
0
 public ICollection <IPluginConstructor> GetConstructors(IPluginSource source, INamespaceItem value) => _queryProxy.PluginConstructors(source, value).ToList();
Example #6
0
 public ICollection <IPluginAction> GetActions(IPluginSource source, INamespaceItem value) => _queryProxy.PluginActions(source, value).Where(a => a.Method != "GetType").ToList();
Example #7
0
        protected void ExecuteService(int update, out ErrorResultTO errors, IPluginAction method, INamespaceItem namespaceItem, IDSFDataObject dataObject)
        {
            errors = new ErrorResultTO();
            var itrs = new List <IWarewolfIterator>(5);
            IWarewolfListIterator itrCollection = new WarewolfListIterator();
            var methodParameters = Inputs.Select(a => new MethodParameter {
                EmptyToNull = a.EmptyIsNull, IsRequired = a.RequiredField, Name = a.Name, Value = a.Value, TypeName = a.TypeName
            }).ToList();

            BuildParameterIterators(update, methodParameters.ToList(), itrCollection, itrs, dataObject);
            var args = new PluginInvokeArgs
            {
                AssemblyLocation = Namespace.AssemblyLocation,
                AssemblyName     = Namespace.AssemblyName,
                Fullname         = namespaceItem.FullName,
                Method           = method.Method,
                Parameters       = methodParameters
            };

            try
            {
                TryExecute(update, dataObject, itrs, itrCollection, methodParameters, args);
            }
            catch (Exception e)
            {
                errors.AddError(e.Message);
            }
        }
 public ICollection <IPluginConstructor> GetConstructors(IPluginSource source, INamespaceItem ns)
 {
     return(_queryProxy.PluginConstructors(source, ns).ToList());
 }
        void ExecuteService(int update, out ErrorResultTO errors, IPluginConstructor constructor, INamespaceItem namespaceItem, IDSFDataObject dataObject)
        {
            _childStatesToDispatch = new List <IDebugState>();
            errors = new ErrorResultTO();
            PluginExecutionDto pluginExecutionDto;

            if (Constructor.IsExistingObject)
            {
                var existingObj        = DataListUtil.AddBracketsToValueIfNotExist(Constructor.ConstructorName);
                var warewolfEvalResult = dataObject.Environment.EvalForJson(existingObj);
                var existingObject     = ExecutionEnvironment.WarewolfEvalResultToString(warewolfEvalResult);
                pluginExecutionDto = new PluginExecutionDto(existingObject);
                ObjectResult       = pluginExecutionDto.ObjectString;
            }
            else
            {
                pluginExecutionDto = new PluginExecutionDto(string.Empty);
            }
            constructor.Inputs = new List <IConstructorParameter>();
            foreach (var parameter in ConstructorInputs)
            {
                var resultToString = GetEvaluatedResult(dataObject, parameter.Value, parameter.EmptyIsNull, update);
                constructor.Inputs.Add(new ConstructorParameter()
                {
                    TypeName    = parameter.TypeName,
                    Name        = parameter.Name,
                    Value       = resultToString,
                    EmptyToNull = parameter.EmptyIsNull,
                    IsRequired  = parameter.RequiredField
                });
            }

            var args = BuidlPluginInvokeArgs(update, constructor, namespaceItem, dataObject);

            pluginExecutionDto.Args = args;
            try
            {
                TryExecuteService(update, dataObject, pluginExecutionDto, args);
            }
            catch (Exception e)
            {
                errors.AddError(e.Message.Contains("Cannot convert given JSON to target type") ? ErrorResource.JSONIncompatibleConversionError + Environment.NewLine + e.Message : e.Message);
            }
        }
        PluginInvokeArgs BuidlPluginInvokeArgs(int update, IPluginConstructor constructor, INamespaceItem namespaceItem, IDSFDataObject dataObject)
        {
            var pluginSource = ResourceCatalog.GetResource <PluginSource>(GlobalConstants.ServerWorkspaceID, SourceId);

            return(new PluginInvokeArgs
            {
                AssemblyLocation = pluginSource.AssemblyLocation,
                AssemblyName = Namespace.AssemblyName,
                Fullname = namespaceItem.FullName,
                PluginConstructor = constructor,
                MethodsToRun = MethodsToRun?.Select(action =>
                {
                    if (action != null)
                    {
                        return new Dev2MethodInfo
                        {
                            Method = action.Method,
                            ID = action.ID,
                            Parameters = action.Inputs?.Select(p => new MethodParameter
                            {
                                Name = p.Name,
                                Value = GetEvaluatedResult(dataObject, p.Value, p.EmptyIsNull, update),
                                TypeName = p.TypeName,
                                EmptyToNull = p.EmptyIsNull,
                                IsRequired = p.RequiredField
                            } as IMethodParameter).ToList() ?? new List <IMethodParameter>(),
                            IsObject = action.IsObject,
                            MethodResult = action.MethodResult,
                            OutputVariable = action.OutputVariable,
                            IsVoid = action.IsVoid
                        } as IDev2MethodInfo;
                    }
                    return new Dev2MethodInfo();
                }).Where(info => !string.IsNullOrEmpty(info.Method)).ToList() ?? new List <IDev2MethodInfo>()
            });
        }
        private void ExecuteService(int update, out ErrorResultTO errors, IPluginConstructor constructor, INamespaceItem namespaceItem, IDSFDataObject dataObject)
        {
            _childStatesToDispatch = new List <IDebugState>();
            errors = new ErrorResultTO();
            PluginExecutionDto pluginExecutionDto;

            if (Constructor.IsExistingObject)
            {
                var existingObj        = DataListUtil.AddBracketsToValueIfNotExist(Constructor.ConstructorName);
                var warewolfEvalResult = dataObject.Environment.EvalForJson(existingObj);
                var existingObject     = ExecutionEnvironment.WarewolfEvalResultToString(warewolfEvalResult);
                pluginExecutionDto = new PluginExecutionDto(existingObject);
                ObjectResult       = pluginExecutionDto.ObjectString;
            }
            else
            {
                pluginExecutionDto = new PluginExecutionDto(string.Empty);
            }
            constructor.Inputs = new List <IConstructorParameter>();
            foreach (var parameter in ConstructorInputs)
            {
                var resultToString = GetEvaluatedResult(dataObject, parameter.Value, parameter.EmptyIsNull, update);
                constructor.Inputs.Add(new ConstructorParameter()
                {
                    TypeName    = parameter.TypeName,
                    Name        = parameter.Name,
                    Value       = resultToString,
                    EmptyToNull = parameter.EmptyIsNull,
                    IsRequired  = parameter.RequiredField
                });
            }

            var args = BuidlPluginInvokeArgs(update, constructor, namespaceItem, dataObject);

            pluginExecutionDto.Args = args;
            try
            {
                using (var appDomain = PluginServiceExecutionFactory.CreateAppDomain())
                {
                    if (dataObject.IsServiceTestExecution)
                    {
                        var serviceTestStep = dataObject.ServiceTest?.TestSteps?.Flatten(step => step.Children)?.FirstOrDefault(step => step.UniqueId == pluginExecutionDto.Args.PluginConstructor.ID);
                        if (serviceTestStep != null && serviceTestStep.Type == StepType.Mock)
                        {
                            var start = DateTime.Now;
                            MockConstructorExecution(dataObject, serviceTestStep, ref pluginExecutionDto);
                            DebugStateForConstructorInputsOutputs(dataObject, update, true, start);
                        }
                        else
                        {
                            var start = DateTime.Now;
                            RegularConstructorExecution(dataObject, appDomain, ref pluginExecutionDto);
                            DebugStateForConstructorInputsOutputs(dataObject, update, false, start);
                        }
                    }
                    else
                    {
                        var start = DateTime.Now;
                        RegularConstructorExecution(dataObject, appDomain, ref pluginExecutionDto);
                        DebugStateForConstructorInputsOutputs(dataObject, update, false, start);
                    }

                    var index = 0;
                    foreach (var dev2MethodInfo in args.MethodsToRun)
                    {
                        if (dataObject.IsServiceTestExecution)
                        {
                            var serviceTestStep = dataObject.ServiceTest?.TestSteps?.Flatten(step => step.Children)?.FirstOrDefault(step => step.UniqueId == dev2MethodInfo.ID);
                            if (serviceTestStep != null)
                            {
                                if (serviceTestStep.Type == StepType.Mock)
                                {
                                    MockMethodExecution(dataObject, serviceTestStep, dev2MethodInfo, index);
                                }
                                else
                                {
                                    RegularMethodExecution(appDomain, pluginExecutionDto, dev2MethodInfo, index, update, dataObject);
                                }
                            }
                            else
                            {
                                RegularMethodExecution(appDomain, pluginExecutionDto, dev2MethodInfo, index, update, dataObject);
                            }
                        }
                        else
                        {
                            RegularMethodExecution(appDomain, pluginExecutionDto, dev2MethodInfo, index, update, dataObject);
                        }
                        if (dev2MethodInfo.HasError)
                        {
                            break;
                        }
                        index++;
                    }
                }
            }
            catch (Exception e)
            {
                if (e.Message.Contains("Cannot convert given JSON to target type"))
                {
                    errors.AddError(ErrorResource.JSONIncompatibleConversionError + Environment.NewLine + e.Message);
                }
                else
                {
                    errors.AddError(e.Message);
                }
            }
        }
Example #12
0
        protected void ExecuteService(int update, out ErrorResultTO errors, IPluginAction method, INamespaceItem namespaceItem, IDSFDataObject dataObject)
        {
            errors = new ErrorResultTO();
            var itrs = new List<IWarewolfIterator>(5);
            IWarewolfListIterator itrCollection = new WarewolfListIterator();
            var methodParameters = Inputs.Select(a => new MethodParameter { EmptyToNull = a.EmptyIsNull, IsRequired = a.RequiredField, Name = a.Name, Value = a.Value, TypeName = a.TypeName }).ToList();
            BuildParameterIterators(update, methodParameters.ToList(), itrCollection, itrs, dataObject);
            var args = new PluginInvokeArgs
            {
                AssemblyLocation = Namespace.AssemblyLocation,
                AssemblyName = Namespace.AssemblyName,
                Fullname = namespaceItem.FullName,
                Method = method.Method,
                Parameters = methodParameters
            };

            try
            {
                while (itrCollection.HasMoreData())
                {
                    int pos = 0;
                    foreach (var itr in itrs)
                    {
                        string injectVal = itrCollection.FetchNextValue(itr);
                        var param = methodParameters.ToList()[pos];


                        param.Value = param.EmptyToNull &&
                                      (injectVal == null ||
                                       string.Compare(injectVal, string.Empty,
                                           StringComparison.InvariantCultureIgnoreCase) == 0)
                            ? null
                            : injectVal;

                        pos++;
                    }                    
                    if (!IsObject)
                    {
                        int i = 0;
                        foreach (var serviceOutputMapping in Outputs)
                        {
                            OutputDescription.DataSourceShapes[0].Paths[i].OutputExpression = DataListUtil.AddBracketsToValueIfNotExist(serviceOutputMapping.MappedTo);
                            i++;
                        }
                        var outputFormatter = OutputFormatterFactory.CreateOutputFormatter(OutputDescription);
                        args.OutputFormatter = outputFormatter;
                    }
                    var result = PluginServiceExecutionFactory.InvokePlugin(args).ToString();
                    ResponseManager = new ResponseManager { OutputDescription = OutputDescription, Outputs = Outputs, IsObject = IsObject, ObjectName = ObjectName };
                    ResponseManager.PushResponseIntoEnvironment(result, update, dataObject,false);
                }
            }
            catch (Exception e)
            {
                errors.AddError(e.Message);
            }
        }