public CACmdLineInputParameters(CAPluginCrashAnalysis aEngine)
        {
            iEngine = aEngine;
            //
            Version version     = aEngine.UIManager.UIVersion;
            string  commandLine = aEngine.UIManager.UICommandLineArguments;

            //
            iSinkParams = new CISinkSerializationParameters(version, commandLine);
        }
Exemple #2
0
        public override object Serialize(CISinkSerializationParameters aParams)
        {
            CXmlDocumentRoot document = new CXmlDocumentRoot();
            //
            string fileName = string.Empty;

            using (CXmlDocumentSerializationParameters parameters = new CXmlDocumentSerializationParameters(aParams, document))
            {
                fileName = parameters.FileName;
                document.XmlSerialize(parameters);
            }
            //
            return(fileName);
        }
        public CXmlDocumentSerializationParameters(CISinkSerializationParameters aCopy, CXmlDocumentRoot aDocument, StringBuilder aBuilder)
            : base(aCopy)
        {
            PrepareDefaultExtensions();
            iDocument = aDocument;
            //
            XmlWriterSettings settings = CreateWriterSettings();

            settings.ConformanceLevel   = ConformanceLevel.Fragment;
            settings.OmitXmlDeclaration = true;
            //
            iWriter   = XmlWriter.Create(aBuilder, settings);
            iFileName = string.Empty;
        }
        public CXmlDocumentSerializationParameters(CISinkSerializationParameters aCopy, CXmlDocumentRoot aDocument)
            : base(aCopy)
        {
            PrepareDefaultExtensions();
            iDocument = aDocument;
            //
            Stream stream = base.CreateFile(out iFileName);
            //
            XmlWriterSettings settings = CreateWriterSettings();

            settings.CloseOutput = true;
            //
            iWriter = XmlWriter.Create(stream, settings);
        }
        public override object Serialize(CISinkSerializationParameters aParams)
        {
            CXmlFileDocument document = new CXmlFileDocument();

            //Read information relevant to crash info file from container to internal variables
            document.ReadDataFromContainer(aParams);
            string newFileName = "";

            if (aParams.PlainTextOutput)
            {
                //Override default file extension
                aParams.FileExtensionFailed  = ".corrupt_txt";
                aParams.FileExtensionSuccess = ".txt";

                //Write document's internal data to file
                newFileName = string.Empty;
                using (Stream output = aParams.CreateFile(out newFileName))
                {
                    using (StreamWriter sw = new StreamWriter(output, Encoding.ASCII))
                    {
                        document.WriteToPlainTextStream(sw);
                    }
                }
            }
            else // XML output
            {
                //Override default file extension
                aParams.FileExtensionFailed  = ".corrupt_xml";
                aParams.FileExtensionSuccess = ".xml";

                //Write document's internal data to file
                newFileName = string.Empty;
                using (Stream output = aParams.CreateFile(out newFileName))
                {
                    XmlWriterSettings settings = new XmlWriterSettings();
                    settings.Indent          = true;
                    settings.NewLineChars    = XmlConsts.Kxml_EOL;
                    settings.NewLineHandling = NewLineHandling.None;
                    using (XmlWriter sw = XmlWriter.Create(output, settings))
                    {
                        document.WriteToXmlStream(sw);
                    }
                }
            }
            return(newFileName);
        }
Exemple #6
0
 private void Menu_File_SaveAs_SinkFormat_Click(object aTag, string aCaption)
 {
     if (aTag is CISink)
     {
         CISink sink = (CISink)aTag;
         //
         CISinkSerializationParameters parameters = new CISinkSerializationParameters(CIContainer, base.UIManager.UIVersion, base.UIManager.UICommandLineArguments);
         FolderBrowserDialog           dialog     = new FolderBrowserDialog();
         dialog.Description = "Save Location";
         //
         if (dialog.ShowDialog() == DialogResult.OK)
         {
             parameters.OutputDirectory = new System.IO.DirectoryInfo(dialog.SelectedPath);
             //
             sink.Serialize(parameters);
         }
     }
 }
Exemple #7
0
        public override object Serialize(CISinkSerializationParameters aParams)
        {
            CCrashInfoFileDocument document = new CCrashInfoFileDocument();

            //Read information relevant to crash info file from container to internal variables
            document.ReadDataFromContainer(aParams);

            //Override default file extension
            aParams.FileExtensionFailed  = ".corrupt_ci";
            aParams.FileExtensionSuccess = ".ci";

            //Write document's internal data to file
            string newFileName = string.Empty;

            using (Stream output = aParams.CreateFile(out newFileName))
            {
                using (StreamWriter sw = new StreamWriter(output, Encoding.ASCII))
                {
                    document.WriteToStream(sw);
                }
            }
            return(newFileName);
        }
        private void TryToCreateOutput(CISink aXmlSink, CIContainer aContainer, CACmdLineFileSource aFile, CACmdLineMessage[] aMessagesToAdd)
        {
            Trace("[CA Cmd] TryToCreateOutput() - START - container source: {0}", aContainer.Source.MasterFileName);

            // By the time we are outputting a container, there should no longer be any messages
            // associated with the file.
            System.Diagnostics.Debug.Assert(aFile.Count == 0);

            // Check whether the file contained any errors or
            // messages of it own.
            if (aMessagesToAdd.Length > 0)
            {
                // Copy warnings, messages and errors into crash item container.
                // Diagnostic messages are not copied.
                CACmdLineFSEntity.CopyMessagesToContainer(aMessagesToAdd, aContainer);
            }

            // This is where we will record the output attempt
            CACmdLineFileSource.OutputEntry outputEntry = null;
            //
            try
            {
                // Finish preparing the sink parameters
                CISinkSerializationParameters sinkParams = iInputs.SinkParameters;
                sinkParams.Container = aContainer;

                // Perform serialization
                Trace("[CA Cmd] TryToCreateOutput() - serializing...");
                object output = aXmlSink.Serialize(sinkParams);
                Trace("[CA Cmd] TryToCreateOutput() - serialization returned: " + output);

                if (aFile != null)
                {
                    // Create new output
                    string outputFileName = output is string?(string)output : string.Empty;

                    // Save output file name
                    outputEntry = aFile.AddOutput(aContainer, outputFileName, TOutputStatus.ESuccess);
                }

                // Merge in any diagnostic messages that were left into the output entry.
                // This ensure we output diagnostics in the final manifest data.
                outputEntry.AddRange(aMessagesToAdd, CACmdLineMessage.TType.ETypeDiagnostic);
            }
            catch (Exception outputException)
            {
                Trace("[CA Cmd] TryToCreateOutput() - outputException.Message:    " + outputException.Message);
                Trace("[CA Cmd] TryToCreateOutput() - outputException.StackTrace: " + outputException.StackTrace);

                if (aFile != null)
                {
                    // Something went wrong with CI serialisation for the specified container.
                    outputEntry = aFile.AddOutput(aContainer, string.Empty, TOutputStatus.EFailed);
                    //
                    outputEntry.AddError("Could not Create CI", "CI output could not be created");
                    outputEntry.AddDiagnostic("CI Sink Exception Message", outputException.Message);
                    outputEntry.AddDiagnostic("CI Sink Exception Stack", outputException.StackTrace);

                    // Since we didn't manage to sink the container to CI successfully, we must
                    // make sure we don't lose any associated messages from the original file.
                    // Merge these into the output entry also.
                    outputEntry.AddRange(aMessagesToAdd);
                }
            }
        }