Exemplo n.º 1
0
        public void DefaultValues()
        {
            var s = new XamlXmlWriterSettings();

            Assert.IsFalse(s.AssumeValidInput, "#1");
            Assert.IsFalse(s.CloseOutput, "#2");
        }
Exemplo n.º 2
0
        public void EscapeCurlies()
        {
            var generated   = new StringBuilder();
            var xmlSettings = new XmlWriterSettings {
                Indent = true, OmitXmlDeclaration = true
            };
            var xamlSettings = new XamlXmlWriterSettings {
                CloseOutput = true
            };
            var xsc = new XamlSchemaContext();

            using (System.Xaml.XamlXmlWriter writer = new System.Xaml.XamlXmlWriter(XmlWriter.Create(new StringWriter(generated), xmlSettings), xsc, xamlSettings))
            {
                var developerType          = xsc.GetXamlType(typeof(Developer));
                var developerExtensionType = xsc.GetXamlType(typeof(DeveloperExtension));
                writer.WriteNamespace(new NamespaceDeclaration(XamlLanguage.Xaml2006Namespace, "x"));
                writer.WriteStartObject(developerType);
                writer.WriteStartMember(developerType.GetMember("Name"));
                writer.WriteValue("{Andrew}");
                writer.WriteEndMember();
            }
            string target = @"<Developer Name=""{}{Andrew}"" xmlns=""clr-namespace:Test.Elements;assembly=XamlTestClasses"" />";

            Assert.AreEqual(target, generated.ToString());
        }
Exemplo n.º 3
0
        public StringBuilder GetXamlDefinition(ActivityBuilder builder)
        {
            var text = new StringBuilder();

            try
            {
                if (builder != null)
                {
                    var sb = new StringBuilder();
                    using (var sw = new StringWriter(sb))
                    {
                        var xamlXmlWriterSettings = new XamlXmlWriterSettings {
                            AssumeValidInput = true
                        };
                        var xamlSchemaContext = new XamlSchemaContext();
                        var xw = ActivityXamlServices.CreateBuilderWriter(new XamlXmlWriter(sw, xamlSchemaContext, xamlXmlWriterSettings));
                        XamlServices.Save(xw, builder);
                        text = sb.Replace("<?xml version=\"1.0\" encoding=\"utf-16\"?>", "");
                    }
                }
                text = SanitizeXaml(text);
            }
            catch (Exception e)
            {
                Dev2Logger.Error("Error loading XAML: ", e, GlobalConstants.WarewolfError);
            }
            return(text);
        }
Exemplo n.º 4
0
        public XamlXmlWriter(XmlWriter xmlWriter, XamlSchemaContext schemaContext, XamlXmlWriterSettings settings)
        {
            this.w        = xmlWriter ?? throw new ArgumentNullException(nameof(xmlWriter));
            this.sctx     = schemaContext ?? throw new ArgumentNullException(nameof(schemaContext));
            this.settings = settings ?? new XamlXmlWriterSettings();
            var manager = new XamlWriterStateManager <XamlXmlWriterException, InvalidOperationException> (true);

            intl = new XamlXmlWriterInternal(xmlWriter, sctx, manager);
        }
Exemplo n.º 5
0
        public void AttachedPropertyTest()
        {
            var generated   = new StringBuilder();
            var xmlSettings = new XmlWriterSettings {
                Indent = true, OmitXmlDeclaration = true
            };
            var xamlSettings = new XamlXmlWriterSettings {
                CloseOutput = true
            };
            var xsc = new XamlSchemaContext();

            using (System.Xaml.XamlXmlWriter writer = new System.Xaml.XamlXmlWriter(XmlWriter.Create(new StringWriter(generated), xmlSettings), xsc, xamlSettings))
            {
                XamlType   mc                     = xsc.GetXamlType(typeof(MediumContainer));
                XamlMember thing                  = mc.GetAttachableMember("Thing");
                var        developerType          = xsc.GetXamlType(typeof(Developer));
                var        developerExtensionType = xsc.GetXamlType(typeof(DeveloperExtension));
                string     ns                     = "clr-namespace:Test.Elements.AnotherNamespace;assembly=XamlTestClasses";
                writer.WriteNamespace(new NamespaceDeclaration(ns, "PreferredPrefix"));
                writer.WriteStartObject(developerType);
                writer.WriteStartMember(developerType.GetMember("Name"));
                writer.WriteValue("Andrew");
                writer.WriteEndMember();

                writer.WriteStartMember(developerType.GetMember("Friend"));
                writer.WriteStartObject(developerExtensionType);
                writer.WriteStartMember(developerExtensionType.GetMember("Name"));
                writer.WriteValue("");
                writer.WriteEndMember();
                writer.WriteEndObject();
                writer.WriteEndMember();

                writer.WriteStartMember(thing);
                writer.WriteValue("attached");
                writer.WriteEndMember();

                writer.WriteEndObject();
            }

            var target = @"<Developer Name=""Andrew"" Friend=""{Developer Name=&quot;&quot;}"" PreferredPrefix:MediumContainer.Thing=""attached"" xmlns=""clr-namespace:Test.Elements;assembly=XamlTestClasses"" xmlns:PreferredPrefix=""clr-namespace:Test.Elements.AnotherNamespace;assembly=XamlTestClasses"" />";

            Assert.AreEqual(target, generated.ToString());
        }
Exemplo n.º 6
0
        public void EmptyStringTest()
        {
            var generated   = new StringBuilder();
            var xmlSettings = new XmlWriterSettings {
                Indent = true, OmitXmlDeclaration = true
            };
            var xamlSettings = new XamlXmlWriterSettings {
                CloseOutput = true
            };
            var xsc = new XamlSchemaContext();

            using (System.Xaml.XamlXmlWriter writer = new System.Xaml.XamlXmlWriter(XmlWriter.Create(new StringWriter(generated), xmlSettings), xsc, xamlSettings))
            {
                var developerType          = xsc.GetXamlType(typeof(Developer));
                var developerExtensionType = xsc.GetXamlType(typeof(DeveloperExtension));
                writer.WriteNamespace(new NamespaceDeclaration(XamlLanguage.Xaml2006Namespace, "x"));
                writer.WriteStartObject(developerType);
                writer.WriteStartMember(developerType.GetMember("Name"));
                writer.WriteValue("Andrew");
                writer.WriteEndMember();

                writer.WriteStartMember(developerType.GetMember("Friend"));
                writer.WriteStartObject(developerExtensionType);
                writer.WriteStartMember(developerExtensionType.GetMember("Name"));
                writer.WriteValue("");
                writer.WriteEndMember();
                writer.WriteEndObject();
                writer.WriteEndMember();

                writer.WriteEndObject();
            }

            var target = @"<Developer Name=""Andrew"" Friend=""{Developer Name=&quot;&quot;}"" xmlns=""clr-namespace:Test.Elements;assembly=XamlTestClasses"" xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" />";

            Assert.AreEqual(target, generated.ToString());
        }
Exemplo n.º 7
0
 public XamlXmlWriter(TextWriter textWriter, XamlSchemaContext schemaContext, XamlXmlWriterSettings settings)
     : this(XmlWriter.Create(textWriter), schemaContext, null)
 {
 }
Exemplo n.º 8
0
 public XamlXmlWriter(Stream stream, XamlSchemaContext schemaContext, XamlXmlWriterSettings settings)
     : this(XmlWriter.Create(stream), schemaContext, null)
 {
 }
		public void DefaultValues ()
		{
			var s = new XamlXmlWriterSettings ();
			Assert.IsFalse (s.AssumeValidInput, "#1");
			Assert.IsFalse (s.CloseOutput, "#2");
		}
Exemplo n.º 10
0
        bool ProcessMarkupItem(ITaskItem markupItem, CodeDomProvider codeDomProvider)
        {
            string markupItemFileName = markupItem.ItemSpec;

            XamlBuildTaskServices.PopulateModifiers(codeDomProvider);

            XamlNodeList xamlNodes = ReadXamlNodes(markupItemFileName);

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

            ClassData classData = ReadClassData(xamlNodes, markupItemFileName);

            string outputFileName = GetFileName(markupItemFileName);
            string codeFileName   = Path.ChangeExtension(outputFileName, GetGeneratedSourceExtension(codeDomProvider));
            string markupFileName = Path.ChangeExtension(outputFileName, GeneratedSourceExtension + XamlBuildTaskServices.XamlExtension);

            classData.EmbeddedResourceFileName = Path.GetFileName(markupFileName);
            classData.HelperClassFullName      = this.HelperClassFullName;

            // Check if code file with partial class exists
            classData.SourceFileExists = UserProvidedFileExists(markupItemFileName, codeDomProvider);

            // Store the full type name as metadata on the markup item
            string rootNamespacePrefix = null;
            string namespacePrefix     = null;
            string typeFullName        = null;

            if (this.Language.Equals("VB") && !String.IsNullOrWhiteSpace(classData.RootNamespace))
            {
                rootNamespacePrefix = classData.RootNamespace + ".";
            }

            if (!String.IsNullOrWhiteSpace(classData.Namespace))
            {
                namespacePrefix = classData.Namespace + ".";
            }

            if (rootNamespacePrefix != null)
            {
                if (namespacePrefix != null)
                {
                    typeFullName = rootNamespacePrefix + namespacePrefix + classData.Name;
                }
                else
                {
                    typeFullName = rootNamespacePrefix + classData.Name;
                }
            }
            else
            {
                if (namespacePrefix != null)
                {
                    typeFullName = namespacePrefix + classData.Name;
                }
                else
                {
                    typeFullName = classData.Name;
                }
            }

            markupItem.SetMetadata("typeName", typeFullName);

            // Execute extensions here to give them a chance to mutate the ClassData before we generate code.
            if (this.SupportExtensions)
            {
                if (!ExecuteExtensions(classData, markupItem))
                {
                    return(false);
                }
            }

            // Generate code file
            CodeCompileUnit codeUnit = new ClassGenerator(this.BuildLogger, codeDomProvider, this.Language).Generate(classData);

            WriteCode(codeDomProvider, codeUnit, codeFileName);
            this.GeneratedCodeFiles.Add(codeFileName);

            // Generate resource file
            if (!string.IsNullOrEmpty(this.AssemblyName))
            {
                // Generate xaml "implementation" file
                XmlWriterSettings xmlSettings = new XmlWriterSettings {
                    Indent = true, IndentChars = "  ", CloseOutput = true
                };
                using (XmlWriter xmlWriter = XmlWriter.Create(File.Open(markupFileName, FileMode.Create), xmlSettings))
                {
                    XamlXmlWriterSettings xamlSettings = new XamlXmlWriterSettings()
                    {
                        CloseOutput = true
                    };

                    // Process EmbeddedResourceXaml to remove xml:space="preserve"
                    // due to a bug in XamlXmlWriter. XamlXmlWriter throws
                    // if there are duplicate xml:space attributes.
                    // It is ok to remove the xml:space attribute
                    // as the XamlXmlWriter would add it in the next step
                    // if needed.
                    RemoveXamlSpaceAttribute(classData);

                    using (XamlReader reader = classData.EmbeddedResourceXaml.GetReader())
                    {
                        using (XamlXmlWriter xamlWriter = new XamlXmlWriter(xmlWriter, reader.SchemaContext, xamlSettings))
                        {
                            XamlServices.Transform(reader, xamlWriter);
                        }
                    }
                }
                this.GeneratedResources.Add(markupFileName);
            }

            if (classData.RequiresCompilationPass2)
            {
                this.RequiresCompilationPass2 = true;
            }
            else
            {
                if (!this.SupportExtensions)
                {
                    if (!ValidateXaml(xamlNodes, markupItemFileName))
                    {
                        this.RequiresCompilationPass2 = true;
                    }
                }
                else
                {
                    // skip validation if we are doing in-proc compile
                    // OR if we have pass 2 extensions hooked up
                    // as we anyway need to run pass 2 in that case
                    if (!this.IsInProcessXamlMarkupCompile && !this.MarkupCompilePass2ExtensionsPresent)
                    {
                        if (!ValidateXaml(xamlNodes, markupItemFileName))
                        {
                            this.RequiresCompilationPass2 = true;
                        }
                    }
                }
            }
            return(true);
        }