예제 #1
0
        /// <summary>
        /// Executes the command.
        /// </summary>
        /// <param name="connection">The connection.</param>
        /// <param name="workspaceId">The workspace unique identifier.</param>
        /// <returns></returns>
        public T ExecuteCommand <T>(IEnvironmentConnection connection, Guid workspaceId)
        {
            // build the service request payload ;)
            var serializer = new Dev2JsonSerializer();

            if (connection == null || !connection.IsConnected)
            {
                if (connection != null)
                {
                    var popupController = CustomContainer.Get <IPopupController>();
                    if (popupController != null)
                    {
                        popupController.Show(string.Format("Server: {0} has disconnected.", connection.DisplayName) + Environment.NewLine +
                                             "Please reconnect before performing any actions", "Disconnected Server", MessageBoxButton.OK, MessageBoxImage.Information, "");
                    }
                }
            }
            else
            {
                // now bundle it up into a nice string builder ;)
                if (ServicePayload == null)
                {
                    ServicePayload = new EsbExecuteRequest();
                }

                ServicePayload.ServiceName = ServiceName;
                StringBuilder toSend  = serializer.SerializeToBuilder(ServicePayload);
                var           payload = connection.ExecuteCommand(toSend, workspaceId);

                return(serializer.Deserialize <T>(payload));
            }
            return(default(T));
        }
예제 #2
0
        /// <summary>
        /// Executes the command.
        /// </summary>
        /// <param name="connection">The connection.</param>
        /// <param name="workspaceId">The workspace unique identifier.</param>
        /// <returns></returns>
        public T ExecuteCommand <T>(IEnvironmentConnection connection, Guid workspaceId)
        {
            // build the service request payload ;)
            var serializer = new Dev2JsonSerializer();

            if (connection == null || !connection.IsConnected)
            {
                if (connection != null)
                {
                    try
                    {
                        var popupController = CustomContainer.Get <IPopupController>();
                        if (popupController != null && connection.HubConnection.State == ConnectionStateWrapped.Disconnected)
                        {
                            popupController.Show(string.Format("Server: {0} has disconnected.", connection.DisplayName) + Environment.NewLine +
                                                 "Please reconnect before performing any actions", "Disconnected Server", MessageBoxButton.OK, MessageBoxImage.Information, "");
                        }
                    }
                    catch (Exception e)
                    {
                        Dev2Logger.Log.Error("Error popup", e);
                    }
                }
            }
            else
            {
                // now bundle it up into a nice string builder ;)
                if (ServicePayload == null)
                {
                    ServicePayload = new EsbExecuteRequest();
                }

                ServicePayload.ServiceName = ServiceName;
                StringBuilder toSend  = serializer.SerializeToBuilder(ServicePayload);
                var           payload = connection.ExecuteCommand(toSend, workspaceId);
                if (payload == null || payload.Length == 0)
                {
                    var popupController = CustomContainer.Get <IPopupController>();
                    if (connection.HubConnection != null && popupController != null && connection.HubConnection.State == ConnectionStateWrapped.Disconnected)
                    {
                        popupController.Show("Server connection has dropped during execution of command." + Environment.NewLine + "Please ensure that your server is still and your network connection is working."
                                             , "Server dropped", MessageBoxButton.OK, MessageBoxImage.Information, "");
                    }
                }
                return(serializer.Deserialize <T>(payload));
            }
            return(default(T));
        }
        public void EnvironmentConnection_AddResource_NewResource_Expected_NewResourceAddedToServer()
        {
            var xmlString = CreateDataObject("FindResourceService", "*");
            IEnvironmentConnection conn = CreateConnection();

            conn.Connect(Guid.Empty);
            if (conn.IsConnected)
            {
                var returnData = conn.ExecuteCommand(xmlString, Guid.Empty);
                Assert.IsTrue(returnData.Contains("Workflow"));
            }
            else
            {
                Assert.Fail("Unable to create a connection to the server");
            }
            conn.Connect(Guid.Empty);
        }
예제 #4
0
        public void EnvironmentConnection_FindResources_Expected()
        {
            var request = CreateDataObject("FindResourceService", "*");

            IEnvironmentConnection conn = CreateConnection();

            conn.Connect(Guid.Empty);
            if (conn.IsConnected)
            {
                var returnData = conn.ExecuteCommand(request, Guid.Empty, Guid.Empty);
                Assert.IsTrue(returnData.Contains("Workflow"));
            }
            else
            {
                Assert.Fail("Unable to create a connection to the server");
            }
            conn.Connect(Guid.Empty);
        }
예제 #5
0
        public T ExecuteCompressedCommand <T>(IEnvironmentConnection connection, Guid workspaceId) where T : class
        {
            // build the service request payload ;)
            var serializer = new Dev2JsonSerializer();

            if (connection == null)
            {
                return(default(T));
            }
            if (!connection.IsConnected && !connection.IsConnecting)
            {
                var popupController = CustomContainer.Get <IPopupController>();
                popupController?.Show(string.Format(ErrorResource.ServerDisconnected, connection.DisplayName) + Environment.NewLine +
                                      ErrorResource.ServerReconnectForActions, ErrorResource.ServerDisconnectedHeader, MessageBoxButton.OK,
                                      MessageBoxImage.Information, "", false, false, true, false, false, false);
            }
            else
            {
                // now bundle it up into a nice string builder ;)
                if (ServicePayload == null)
                {
                    ServicePayload = new EsbExecuteRequest();
                }

                ServicePayload.ServiceName = ServiceName;
                StringBuilder toSend  = serializer.SerializeToBuilder(ServicePayload);
                var           payload = connection.ExecuteCommand(toSend, workspaceId);
                try
                {
                    if (payload == null || payload.Length == 0)
                    {
                        return(default(T));
                    }
                    var message = serializer.Deserialize <CompressedExecuteMessage>(payload).GetDecompressedMessage();
                    return(serializer.Deserialize <T>(message));
                }
                catch (NullReferenceException e)
                {
                    Dev2Logger.Debug("fallback to non compressed", e);
                    return(serializer.Deserialize <T>(payload));
                }
            }
            return(default(T));
        }
예제 #6
0
        public T ExecuteCommand <T>(IEnvironmentConnection connection, Guid workspaceId) where T : class
        {
            var serializer      = new Dev2JsonSerializer();
            var popupController = CustomContainer.Get <IPopupController>();

            if (connection == null || !connection.IsConnected)
            {
                IsConnectionValid(connection, popupController);
            }
            else
            {
                if (ServicePayload == null)
                {
                    ServicePayload = new EsbExecuteRequest();
                }

                ServicePayload.ServiceName = ServiceName;
                var toSend  = serializer.SerializeToBuilder(ServicePayload);
                var payload = connection.ExecuteCommand(toSend, workspaceId);
                ValidatePayload(connection, payload, popupController);
                var executeCommand = serializer.Deserialize <T>(payload);
                if (executeCommand == null)
                {
                    var execMessage = serializer.Deserialize <ExecuteMessage>(payload);
                    if (execMessage != null)
                    {
                        return(CheckAuthorization <T>(execMessage));
                    }
                }
                else
                {
                    if (typeof(T) == typeof(ExecuteMessage))
                    {
                        return(CheckAuthorization <T>(executeCommand as ExecuteMessage));
                    }
                    return(executeCommand);
                }
            }
            return(default(T));
        }
예제 #7
0
 public StringBuilder ExecuteCommand(StringBuilder xmlRequest, Guid workspaceId) => _wrappedConnection.ExecuteCommand(xmlRequest, workspaceId);