Ejemplo n.º 1
0
        public static void PopulateEndPointOverridesFromForm(this Controller controller, FormCollection form, RuleExecutionRequest request, string controlPrefix)
        {
            if (form == null || request == null)
            {
                throw new Exception("Cannot populate Rule Set Parameters. Form or Request was null.");
            }

            var tempContainer = new List <RuleExecutionEndPointOverride>();

            foreach (var fieldName in form.AllKeys)
            {
                if (fieldName.StartsWith(controlPrefix) && fieldName.EndsWith(Literals.EndPointOverrideKeyNamePart))
                {
                    var endPointName = form[fieldName];
                    if (!String.IsNullOrWhiteSpace(endPointName))
                    {
                        var endPointOverride = new RuleExecutionEndPointOverride {
                            EndPointName = endPointName
                        };
                        var paramContainer = new List <RuleExecutionEndPointProperty>();
                        var prefixText     = Regex.Match(fieldName, "^" + controlPrefix + @"\d+", RegexOptions.RightToLeft);
                        foreach (var childFieldName in form.AllKeys)
                        {
                            if (childFieldName.StartsWith(prefixText + Literals.ParamNameKeyPart))
                            {
                                var paramName = form[childFieldName];
                                if (!String.IsNullOrWhiteSpace(paramName))
                                {
                                    var parameter = new RuleExecutionEndPointProperty {
                                        Name = paramName.Trim()
                                    };
                                    var suffixText = Regex.Match(childFieldName, @"\d+$", RegexOptions.RightToLeft);
                                    if (suffixText.Success)
                                    {
                                        int suffixCount;
                                        if (int.TryParse(suffixText.Value, out suffixCount))
                                        {
                                            parameter.Value = form[prefixText + Literals.ParamValueKeyPart + suffixCount];
                                        }
                                    }
                                    paramContainer.Add(parameter);
                                }
                            }
                        }
                        endPointOverride.Properties = paramContainer;
                        tempContainer.Add(endPointOverride);
                    }
                }
            }

            request.EndPointOverrides = tempContainer;
        }
Ejemplo n.º 2
0
        private static void AssignEndPointOverrideProperty(RuleSession session, EndPointDef endPointDef, RuleExecutionEndPointProperty property)
        {
            if (String.IsNullOrEmpty(property.Name))
            {
                throw new Exception(String.Format("No name was provided for a property override on endpoint '{0}'",
                                                  endPointDef.Name));
            }

            // check the type of the end point
            var endPointType = endPointDef.GetType();

            if (endPointType == typeof(DatabaseConnection))
            {
                switch (property.Name.ToLower())
                {
                case "connectionstring":
                    session.Overrides.OverrideDatabaseConnection(endPointDef.Name, property.Value);
                    return;
                }
            }
            else if (endPointType == typeof(WebServiceDef))
            {
                switch (property.Name.ToLower())
                {
                case "address":
                    session.Overrides.OverrideWebServiceAddress(endPointDef.Name, property.Value);
                    return;

                case "certificate":
                    session.Overrides.OverrideWebServiceCertificate(endPointDef.Name, property.Value);
                    return;

                case "wsdladdress":
                    session.Overrides.OverrideWebServiceWsdlAddress(endPointDef.Name, property.Value);
                    return;
                }
            }
            else if (endPointType == typeof(SendMailServerDef))
            {
                switch (property.Name.ToLower())
                {
                case "address":
                    session.Overrides.OverrideMailServerConnection(endPointDef.Name, property.Value);
                    return;
                }
            }

            // throw down here, unsupported
            throw new Exception(String.Format("The property '{0}' on endpoint type '{1}' is currently not supported for override.", property.Name, endPointType.Name));
        }