Example #1
0
        private bool TrySetSerializationParameter([NotNull] XdmWriterSettings serializerSettings,
                                                  [NotNull] XmlQualifiedName key,
                                                  [NotNull] string value)
        {
            Assert.ArgumentNotNull(serializerSettings, "serializerSettings");
            Assert.ArgumentNotNull(key, "key");
            Assert.ArgumentNotNull(value, "value");

            try
            {
                if (serializerSettings.SetParameter(key, value))
                {
                    Log.LogMessage(MessageImportance.Low,
                                   Resources.AddingSerializationParameter,
                                   key,
                                   value);
                }
                else
                {
                    Log.LogWarning(Resources.UnrecognisedSerializationParameter, key, value);
                }
            }
            catch (XdmException e)
            {
                LogXdmException(Severity.Error, e.InnerException);
                return(false);
            }
            return(true);
        }
Example #2
0
        /// <summary>
        /// Performs the serialization.
        /// </summary>
        /// <returns>
        /// Returns <see langword="true" /> if the task successfully executed; otherwise, <see langword="false" />.
        /// </returns>
        protected override bool Process()
        {
            if (PopulateSchemaSet() == false)
            {
                return(false);
            }

            var documentSet = GetDocumentSet();

            var contextItem = LoadContextItem(documentSet, Input);

            if (contextItem == null)
            {
                return(false);
            }

            var serializationSettings = new XdmWriterSettings();

            if (!SetSerializationSettings(serializationSettings))
            {
                return(false);
            }

            using (Stream outputStream = File.Create(Output.ItemSpec))
                XdmWriter.Serialize(contextItem.CreateNavigator(), outputStream, serializationSettings);

            OutputFiles = new[] { Output };

            return(true);
        }
Example #3
0
        public XmlWriter Resolve(string resultDocumentUri,
                                 XdmWriterSettings settings)
        {
            Assert.ArgumentNotNull(resultDocumentUri, "resultDocumentUri");
            Assert.ArgumentNotNull(settings, "settings");

            settings.CloseOutput = true;

            var uri = new Uri(new Uri(_baseOutputUri), resultDocumentUri);

            if (uri.Scheme !=
                Uri.UriSchemeFile)
            {
                _task.Log.LogError(Resources.CannotCreateResultDocument,
                                   resultDocumentUri);
                return(null);
            }

            var fileInfo = new AnyUri(resultDocumentUri).Normalize() == _baseOutputUri
                               ? _primaryOutput
                               : new FileInfo(uri.LocalPath);

            if (fileInfo == null)
            {
                _task.Log.LogMessage(MessageImportance.Low,
                                     Resources.DiscardingPrimaryResultDocument,
                                     resultDocumentUri);
                return(null);
            }

            return(CreateResultDocument(settings, fileInfo));
        }
Example #4
0
        private XmlWriter CreateResultDocument([NotNull] XdmWriterSettings settings,
                                               [NotNull] FileInfo fileInfo)
        {
            Assert.ArgumentNotNull(settings, "settings");
            Assert.ArgumentNotNull(fileInfo, "fileInfo");

            _task.Log.LogMessage(MessageImportance.Low, Resources.CreateResultDocument, fileInfo.FullName);
            var taskItem = new TaskItem(fileInfo.FullName);

            var directory = fileInfo.Directory;

            if (directory != null && directory.Exists == false)
            {
                directory.Create();
            }
            var localPath = fileInfo.FullName;
            var stream    = GetTemporaryFile(localPath);
            var name      = stream.Name;

            taskItem.SetMetadata("MimeType", settings.MediaType ?? string.Empty);
            taskItem.SetMetadata("Encoding", settings.Encoding);

            // Record that, on failure, we must delete the newly created file.
            _log.Add(UndoCreateAction(name, stream));

            // Record that, on completion, we need to move the temporary file to the actual file.
            _onComplete.Add(ReplaceAction(name, localPath, taskItem));

            return(XdmWriter.Create(stream, settings));
        }
Example #5
0
        /// <summary>
        /// Executes the query.
        /// </summary>
        /// <returns>
        /// Returns <see langword="true" /> if the task successfully executed; otherwise, <see langword="false" />.
        /// </returns>
        protected override bool Process()
        {
            if (PopulateSchemaSet() == false)
            {
                return(false);
            }

            var includeSettings = new XIncludeSettings
            {
                DocumentSet  = GetDocumentSet(),
                FixupXmlBase = BaseUriFixup,
                FixupXmlLang = LanguageFixup
            };

            var contextItem = LoadContextItem(includeSettings.DocumentSet, Input);

            if (contextItem == null)
            {
                return(false);
            }

            var serializationSettings = new XdmWriterSettings();

            if (!SetSerializationSettings(serializationSettings))
            {
                return(false);
            }

            using (Stream outputStream = File.Create(Output.ItemSpec))
                XInclude.Process(contextItem.CreateNavigator(), outputStream, serializationSettings, includeSettings);

            OutputFiles = new[] { Output };

            return(true);
        }
Example #6
0
        private void Explain([NotNull] XQuery query)
        {
            Assert.ArgumentNotNull(query, "query");

            Assert.IsNotNull(Plan, "Plan");

            var settings = new XdmWriterSettings
            {
                Indent = true
            };

            var stream = File.OpenWrite(Plan.GetMetadata("FullPath"));

            using (var xdmWriter = XdmWriter.Create(stream, settings))
                query.Explain(xdmWriter);
        }
Example #7
0
        private void Explain([NotNull] Xslt transform)
        {
            Assert.ArgumentNotNull(transform, "transform");

            Assert.IsNotNull(Plan, "Plan");

            var settings = new XdmWriterSettings
            {
                Indent = true
            };

            var stream = File.OpenWrite(Plan.GetMetadata("FullPath"));

            using (var xdmWriter = XdmWriter.Create(stream, settings))
                transform.Explain(xdmWriter);
        }
Example #8
0
        /// <summary>
        ///     Sets the serialization parameters from  from the <see cref = "SerializationParameters" /> property.
        /// </summary>
        /// <param name = "serializerSettings">An <see cref = "XdmWriterSettings" /> instance.</param>
        /// <returns><see langword = "true" /> if setting serialization parameters was successful; otherwise, <see langword = "false" />.</returns>
        protected bool SetSerializationSettings([NotNull] XdmWriterSettings serializerSettings)
        {
            Assert.ArgumentNotNull(serializerSettings, "serializerSettings");

            var xmlReaderSettings = new XmlReaderSettings {
                ConformanceLevel = ConformanceLevel.Fragment
            };

            if (SerializationParameterDocument != null)
            {
                Log.LogMessage(MessageImportance.Low,
                               Resources.SettingSerializationParameter,
                               SerializationParameterDocument.ItemSpec);

                var path = SerializationParameterDocument.GetMetadata("FullPath");

                using (var reader = XmlReader.Create(path, xmlReaderSettings))
                    serializerSettings.ParameterDocument(reader);
            }

            if (string.IsNullOrEmpty(SerializationParameters))
            {
                return(true);
            }

            try
            {
                using (var reader = XmlReader.Create(new StringReader(SerializationParameters), xmlReaderSettings))
                {
                    reader.Read();
                    while (!reader.EOF)
                    {
                        switch (reader.NodeType)
                        {
                        case XmlNodeType.Element:
                        {
                            if (reader.LocalName != "Parameter")
                            {
                                continue;
                            }

                            var name         = reader.GetAttribute("Name");
                            var namespaceUri = reader.GetAttribute("Namespace") ?? string.Empty;
                            var value        = reader.GetAttribute("Value");
                            var key          = new XmlQualifiedName(name, namespaceUri);

                            if (TrySetSerializationParameter(serializerSettings, key, value) == false)
                            {
                                return(false);
                            }

                            reader.Skip();
                            break;
                        }

                        default:
                            reader.Skip();
                            break;
                        }
                    }
                }

                return(true);
            }
            catch (XmlException e)
            {
                LogXmlException(Severity.Error, e);
                return(false);
            }
        }