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())); }
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()); }
public ICollection <IPluginConstructor> GetConstructors(IPluginSource source, INamespaceItem value) => _queryProxy.PluginConstructors(source, value).ToList();
public ICollection <IPluginAction> GetActions(IPluginSource source, INamespaceItem value) => _queryProxy.PluginActions(source, value).Where(a => a.Method != "GetType").ToList();
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); } } }
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); } }