public CompileMessageList FetchMessages(Guid workspaceId, Guid serviceId, IList <string> dependants, CompileMessageType[] filter = null)
        {
            IList <ICompileMessageTO> result = new List <ICompileMessageTO>();

            lock (Lock)
            {
                IList <ICompileMessageTO> messages;
                if (_messageRepo.TryGetValue(workspaceId, out messages))
                {
                    var candidateMessage  = messages.Where(c => c.ServiceID == serviceId);
                    var compileMessageTos = candidateMessage as IList <ICompileMessageTO> ??
                                            candidateMessage.ToList();

                    foreach (var msg in compileMessageTos)
                    {
                        if (filter != null)
                        {
                            // TODO : Apply filter logic ;)
                        }
                        else
                        {
                            result.Add(msg);
                        }
                    }
                }
            }
            var compileMessageList = new CompileMessageList {
                MessageList = result, ServiceID = serviceId, Dependants = dependants
            };

            RemoveMessages(workspaceId, serviceId);
            return(compileMessageList);
        }
        public void CompileMessageList_Validate_Default()
        {
            var expectedMessageList = new List <ICompileMessageTO>
            {
                new CompileMessageTO()
            };
            var expectedServiceId  = Guid.NewGuid();
            var expectedDependants = new List <string> {
                "test"
            };

            var compileMessageList = new CompileMessageList
            {
                MessageList = expectedMessageList,
                ServiceID   = expectedServiceId,
                Dependants  = expectedDependants
            };

            Assert.AreEqual(expectedMessageList, compileMessageList.MessageList);
            Assert.AreEqual(1, compileMessageList.MessageList.Count);
            Assert.AreEqual(1, compileMessageList.Count);
            Assert.AreEqual(expectedServiceId, compileMessageList.ServiceID);
            Assert.AreEqual(expectedDependants, compileMessageList.Dependants);
            Assert.AreEqual(1, compileMessageList.Dependants.Count);
        }
        public void CompileMessageList_Count_Expected_Zero()
        {
            var compileMessageList = new CompileMessageList
            {
                MessageList = null
            };

            Assert.AreEqual(0, compileMessageList.Count);
        }
        void OnReceivedResourceAffectedMessage(Guid resourceId, CompileMessageList compileMessageList)
        {
            var numberOfDependants = compileMessageList.Dependants;

            if (resourceId == ContextualResourceModel.ID && numberOfDependants.Count > 0)
            {
                var showResourceChangedUtil = ResourceChangeHandlerFactory.Create(EventPublisher);
                Execute.OnUIThread(() =>
                {
                    showResourceChangedUtil.ShowResourceChanged(ContextualResourceModel, numberOfDependants);
                });
            }
        }
Exemple #5
0
        static Mock <IEnvironmentConnection> SetupConnectionWithCompileMessageList(List <ICompileMessageTO> compileMessageTos, List <string> deps)
        {
            CompileMessageList compileMessageList = new CompileMessageList {
                MessageList = compileMessageTos, Dependants = deps
            };
            var    jsonSer         = new Dev2JsonSerializer();
            string serializeObject = jsonSer.Serialize(compileMessageList);
            var    envConnection   = new Mock <IEnvironmentConnection>();

            envConnection.Setup(e => e.IsConnected).Returns(true);
            envConnection.Setup(c => c.ServerEvents).Returns(new EventPublisher());
            envConnection.Setup(connection => connection.ExecuteCommand(It.IsAny <StringBuilder>(), It.IsAny <Guid>(), It.IsAny <Guid>())).Returns(new StringBuilder(serializeObject));
            return(envConnection);
        }
Exemple #6
0
        public void SendResourcesAffectedMemo(Guid resourceId, IList <ICompileMessageTO> messages)
        {
            var msgs = new CompileMessageList {
                Dependants = new List <string>()
            };

            messages.ToList().ForEach(s => msgs.Dependants.Add(s.ServiceName));
            msgs.MessageList = messages;
            msgs.ServiceID   = resourceId;
            var serializedMemo             = _serializer.Serialize(msgs);
            var hubCallerConnectionContext = Clients;

            hubCallerConnectionContext.All.ReceiveResourcesAffectedMemo(serializedMemo);
        }
Exemple #7
0
        private void OnReceivedResourceAffectedMessage(Guid resourceId, CompileMessageList compileMessageList)
        {
            var numberOfDependants = compileMessageList.Dependants;

            if (resourceId == ContextualResourceModel.ID && numberOfDependants.Count > 0)
            {
                var showResourceChangedUtil = ResourceChangeHandlerFactory.Create(EventPublisher);
                Execute.OnUIThread(() =>
                {
                    numberOfDependants = compileMessageList.MessageList.Select(to => to.ServiceID.ToString()).Distinct(StringComparer.InvariantCultureIgnoreCase).ToList();
                    showResourceChangedUtil.ShowResourceChanged(ContextualResourceModel, numberOfDependants);
                });
            }
        }
Exemple #8
0
        void SendResourcesAffectedMemo(Guid resourceId, IList <ICompileMessageTO> messages)
        {
            var msgs = new CompileMessageList {
                Dependants = new List <string>()
            };

            messages.ToList().ForEach(s => msgs.Dependants.Add(s.ServiceName));
            msgs.MessageList = messages;
            msgs.ServiceID   = resourceId;
            var serializedMemo = _serializer.Serialize(msgs);

            if (!ResourceAffectedMessagesCache.ContainsKey(resourceId))
            {
                ResourceAffectedMessagesCache.Add(resourceId, serializedMemo);
            }
        }
        public StringBuilder Execute(Dictionary <string, StringBuilder> values, IWorkspace theWorkspace)
        {
            string serviceId   = null;
            string workspaceId = null;

            Dev2JsonSerializer serializer = new Dev2JsonSerializer();
            var result = new ExecuteMessage {
                HasError = false
            };

            StringBuilder tmp;

            values.TryGetValue("ServiceID", out tmp);
            if (tmp != null)
            {
                serviceId = tmp.ToString();
            }
            values.TryGetValue("WorkspaceID", out tmp);
            if (tmp != null)
            {
                workspaceId = tmp.ToString();
            }
            values.TryGetValue("FilterList", out tmp);
            if (tmp != null)
            {
            }

            if (string.IsNullOrEmpty(serviceId) || string.IsNullOrEmpty(workspaceId))
            {
                throw new InvalidDataContractException("Null or empty ServiceID or WorkspaceID");
            }

            Guid wGuid;
            Guid sGuid;

            Guid.TryParse(workspaceId, out wGuid);
            Guid.TryParse(serviceId, out sGuid);


            var thisService = ResourceCatalog.Instance.GetResource(wGuid, sGuid);
            var msgs        = new CompileMessageList();
            var dependants  = new List <Guid>();

            if (thisService != null)
            {
                var workspaceGuids = WorkspaceRepository.Instance.GetWorkspaceGuids();
                workspaceGuids.ForEach(guid =>
                {
                    var union  = dependants.Union(ResourceCatalog.Instance.GetDependants(guid, thisService.ResourceID));
                    dependants = union.ToList();
                });

                var enumerable = dependants.Select(a =>
                {
                    var resource = ResourceCatalog.Instance.GetResource(GlobalConstants.ServerWorkspaceID, a) ?? ResourceCatalog.Instance.GetResource(wGuid, a);
                    return(resource == null?"": resource.ResourcePath);
                });
                var deps = enumerable.Distinct().ToList();
                if (deps.Count > 0)
                {
                    // ReSharper disable ExpressionIsAlwaysNull
                    msgs = new CompileMessageList();
                    var compileMessageTo = new CompileMessageTO
                    {
                        ErrorType   = ErrorType.Critical,
                        MessageType = CompileMessageType.MappingChange
                    };
                    msgs.Dependants = new List <string>();
                    deps.ForEach(s => msgs.Dependants.Add(s));
                    msgs.MessageList = new List <ICompileMessageTO> {
                        compileMessageTo
                    };
                    // ReSharper restore ExpressionIsAlwaysNull
                    return(serializer.SerializeToBuilder(msgs));
                }
            }
            else
            {
                result.Message.Append("Could not locate service with ID [ " + sGuid + " ]");
            }

            return(serializer.SerializeToBuilder(msgs));
        }
Exemple #10
0
        public StringBuilder Execute(Dictionary <string, StringBuilder> values, IWorkspace theWorkspace)
        {
            string serviceId   = null;
            string workspaceId = null;

            Dev2JsonSerializer serializer = new Dev2JsonSerializer();
            var result = new ExecuteMessage {
                HasError = false
            };

            StringBuilder tmp;

            values.TryGetValue("ServiceID", out tmp);
            if (tmp != null)
            {
                serviceId = tmp.ToString();
            }
            values.TryGetValue("WorkspaceID", out tmp);
            if (tmp != null)
            {
                workspaceId = tmp.ToString();
            }
            values.TryGetValue("FilterList", out tmp);
            if (tmp != null)
            {
            }

            if (string.IsNullOrEmpty(serviceId) || string.IsNullOrEmpty(workspaceId))
            {
                throw new InvalidDataContractException("Null or empty ServiceID or WorkspaceID");
            }

            Guid wGuid;
            Guid sGuid;

            Guid.TryParse(workspaceId, out wGuid);
            Guid.TryParse(serviceId, out sGuid);


            var thisService = ResourceCatalog.Instance.GetResource(wGuid, sGuid);

            if (thisService != null)
            {
                var deps = thisService.Dependencies;

                CompileMessageType[] filters = null; // TODO : Convert string list to enum array ;)

                // ReSharper disable ExpressionIsAlwaysNull
                CompileMessageList msgs = CompileMessageRepo.Instance.FetchMessages(wGuid, sGuid, deps, filters);
                // ReSharper restore ExpressionIsAlwaysNull

                result.Message.Append(serializer.SerializeToBuilder(msgs));
            }
            else
            {
                result.Message.Append("Could not locate service with ID [ " + sGuid + " ]");
                result.HasError = true;
            }

            return(serializer.SerializeToBuilder(result));
        }