private CodeThrowExceptionStatement GenerateExceptionStatement(GenerateErrorActivity activity)
        {
            var parameters =
                AbstractActivityBuilder.GenerateParameters(
                    new List <string> {
                @"""Message : {0}\nMessage code : {1} """
            },
                    activity);

            var stringFormatCall = new CodeMethodInvokeExpression();

            stringFormatCall.Parameters.AddRange(parameters);

            var formatMethod = new CodeMethodReferenceExpression {
                MethodName = "Format"
            };
            var stringObject = new CodeVariableReferenceExpression {
                VariableName = "String"
            };

            formatMethod.TargetObject = stringObject;
            stringFormatCall.Method   = formatMethod;

            var throwException =
                new CodeThrowExceptionStatement(
                    new CodeObjectCreateExpression(new CodeTypeReference(typeof(System.Exception)), stringFormatCall));

            return(throwException);
        }
        public CodeStatementCollection GenerateInvocationCode(Activity activity, Dictionary <string, string> variables)
        {
            var errorActivity            = (GenerateErrorActivity)activity;
            var invocationCodeCollection = new CodeStatementCollection();

            // add log
            invocationCodeCollection.AddRange(AbstractActivityBuilder.LogActivity(errorActivity));

            //add the input
            invocationCodeCollection.AddRange(this.xslBuilder.Build(activity.InputBindings));

            // Add the exception Call
            invocationCodeCollection.Add(this.GenerateExceptionStatement(errorActivity));

            return(invocationCodeCollection);
        }