public ResourceCatalogResult SaveResource(Guid workspaceID, StringBuilder resourceXml, string savedPath, string reason, string user) { try { if (resourceXml == null || resourceXml.Length == 0) { throw new ArgumentNullException(nameof(resourceXml)); } var @lock = Common.GetWorkspaceLock(workspaceID); lock (@lock) { var xml = resourceXml.ToXElement(); var resource = new Resource(xml); GlobalConstants.InvalidateCache(resource.ResourceID); Dev2Logger.Info("Save Resource." + resource, GlobalConstants.WarewolfInfo); _serverVersionRepository.StoreVersion(resource, user, reason, workspaceID, savedPath); resource.UpgradeXml(xml, resource); var result = xml.ToStringBuilder(); return(CompileAndSave(workspaceID, resource, result, savedPath, reason)); } } catch (Exception err) { Dev2Logger.Error("Save Error", err, GlobalConstants.WarewolfError); throw; } }
public void WorkflowHelperCompileExpressionsWithActivityExpectedCompilesExpressionsAddsToCacheThenInvalidate() { const string ExpressionParams = "(\"\",AmbientDataList)"; var fsa = new DsfFlowSwitchActivity { ExpressionText = GlobalConstants.InjectedSwitchDataFetchOld + ExpressionParams }; var fda = new DsfFlowDecisionActivity { ExpressionText = GlobalConstants.InjectedDecisionHandlerOld + ExpressionParams }; var startNode = new FlowStep { Action = new CommentActivityForTest() }; var chart = new Flowchart { StartNode = startNode }; chart.Nodes.Add(startNode); chart.Nodes.Add(new FlowDecision(fda)); chart.Nodes.Add(new FlowSwitch <string> { Expression = fsa }); var workflow = new DynamicActivity { Implementation = () => chart }; var guid = Guid.NewGuid(); new WorkflowHelper().CompileExpressions(workflow, guid); // No exception thrown means compilation worked var compiledExpressionRoot = CompiledExpressionInvoker.GetCompiledExpressionRootForImplementation(workflow) as ICompiledExpressionRoot; Assert.AreEqual(GlobalConstants.Resultscache.Count, 1); GlobalConstants.InvalidateCache(guid); Assert.AreEqual(GlobalConstants.Resultscache.Count, 0); Assert.IsNotNull(compiledExpressionRoot); }
public ResourceCatalogResult SaveResource(Guid workspaceID, IResource resource, string savedPath, string reason, string user) { _serverVersionRepository.StoreVersion(resource, user, reason, workspaceID, savedPath); if (resource == null) { throw new ArgumentNullException(nameof(resource)); } var @lock = Common.GetWorkspaceLock(workspaceID); lock (@lock) { if (resource.ResourceID == Guid.Empty) { resource.ResourceID = Guid.NewGuid(); } GlobalConstants.InvalidateCache(resource.ResourceID); savedPath = Common.SanitizePath(savedPath); var result = resource.ToStringBuilder(); return(CompileAndSave(workspaceID, resource, result, savedPath, reason)); } }