public void CanSerializeAndDeserializeXML()
        {
            var obj     = new FieldDefinition();
            var service = new DefaultXMLSerializationService();

            var strValue = service.Serialize(obj);

            service.Deserialize(obj.GetType(), strValue);
        }
Exemple #2
0
        public void Create_BuildBaseline()
        {
            var assemblies = new List <Assembly>();

            // SPMeta2
            // SPMeta2.Standard
            assemblies.Add(typeof(FieldDefinition).Assembly);
            assemblies.Add(typeof(TaxonomyFieldDefinition).Assembly);

            // SPMeta2.CSOM
            // SPMeta2.CSOM.Standard
            assemblies.Add(typeof(SPMeta2.CSOM.ModelHandlers.FieldModelHandler).Assembly);
            assemblies.Add(typeof(SPMeta2.CSOM.Standard.ModelHandlers.Fields.TaxonomyFieldModelHandler).Assembly);

            // SPMeta2.SSOM
            // SPMeta2.SSOM.Standard
            assemblies.Add(typeof(SPMeta2.SSOM.ModelHandlers.FieldModelHandler).Assembly);
            assemblies.Add(typeof(SPMeta2.SSOM.Standard.ModelHandlers.Fields.TaxonomyFieldModelHandler).Assembly);

            var result = new List <BuildBaseline>();

            foreach (var assembly in assemblies)
            {
                result.Add(BuildBaselineFromAssembly(assembly));
            }

            var fileName = "m2.buildbaseline.xml";

            var xmlService = new DefaultXMLSerializationService();

            xmlService.RegisterKnownType(typeof(BuildBaseline));

            var content = xmlService.Serialize(result);

            RegressionUtils.WriteLine(content);

            var paths = new[]
            {
                System.IO.Path.GetFullPath(fileName),
                System.IO.Path.GetFullPath("../../../SPMeta2.Build/" + fileName)
            };

            foreach (var path in paths)
            {
                var dirPath = Path.GetDirectoryName(path);
                Directory.CreateDirectory(dirPath);

                System.IO.File.WriteAllText(path, content);
            }
        }
 public NuGetSolutionPackageService()
 {
     SerializationService = new DefaultXMLSerializationService();
 }
Exemple #4
0
        /// <summary>
        /// Resolves solution tool package.
        ///
        /// If .SolutionToolPackage is null, looking for NuGet package tags, and then into solution
        /// </summary>
        /// <returns></returns>
        protected virtual SolutionToolPackage ResolveSolutionToolPackage(IPackage package)
        {
            MetaPackTrace.Verbose("Resolving solution tool packages...");

            SolutionToolPackage result = null;

            if (SolutionToolPackage == null)
            {
                MetaPackTrace.Verbose(".SolutionToolPackage is null. Switching to tags and solution itself");

                // resolve from the tags
                var tags = string.IsNullOrEmpty(package.Tags)
                            ? package.Tags.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries)
                            : Enumerable.Empty <string>();

                var packageId      = ExtractTagValueByPrefix(tags, "metapack-toolid-");
                var packageVersion = ExtractTagValueByPrefix(tags, "metapack-toolid-");

                if (!string.IsNullOrEmpty(packageId))
                {
                    MetaPackTrace.Verbose(String.Format("Found tool. ToolId:[{0}] ToolVersion:[{1}]", packageId, packageVersion));

                    result = new SolutionToolPackage
                    {
                        Id      = packageId,
                        Version = packageVersion
                    };
                }
                else
                {
                    MetaPackTrace.Verbose("Solution package tags don't have tool package defined. Switching to solution options.");

                    var defaultSolutionPackagingService = new DefaultNuGetSolutionPackageService();
                    var solutionPackageFile             = defaultSolutionPackagingService.FindSolutionPackageFile(package);

                    var serializationService = new DefaultXMLSerializationService();
                    serializationService.RegisterKnownType(typeof(SolutionPackageBase));

                    MetaPackTrace.Verbose("Unpacking solution package...");
                    using (var streamReader = new StreamReader(solutionPackageFile.GetStream()))
                    {
                        var solutionFileContent = streamReader.ReadToEnd();

                        var xDoc            = XDocument.Parse(solutionFileContent);
                        var rootElementName = xDoc.Root.Name.LocalName;

                        var defNamespace  = xDoc.Root.Attribute("xmlns").Value;
                        var genericXmlDoc = xDoc.ToString()
                                            .Replace(
                            string.Format("<{0}", rootElementName),
                            string.Format("<{0}", typeof(SolutionPackageBase).Name))
                                            .Replace(
                            string.Format("</{0}>", rootElementName),
                            string.Format("</{0}>", typeof(SolutionPackageBase).Name))

                                            .Replace(defNamespace, "http://schemas.datacontract.org/2004/07/MetaPack.Core.Packaging");

                        var typedPackage = serializationService.Deserialize(
                            typeof(SolutionPackageBase), genericXmlDoc)
                                           as SolutionPackageBase;

                        var packageIdFromPackage      = ExtractAdditionalOption(typedPackage.AdditionalOptions, DefaultOptions.SolutionToolPackage.PackageId.Id);
                        var packageVersionFromPackage = ExtractAdditionalOption(typedPackage.AdditionalOptions, DefaultOptions.SolutionToolPackage.PackageVersion.Id);

                        if (!string.IsNullOrEmpty(packageIdFromPackage))
                        {
                            MetaPackTrace.Verbose(string.Format("Found tool. ToolId:[{0}] ToolVersion:[{1}]", packageIdFromPackage, packageVersionFromPackage));

                            result = new SolutionToolPackage
                            {
                                Id      = packageIdFromPackage,
                                Version = packageVersionFromPackage
                            };
                        }
                        else
                        {
                            MetaPackTrace.Verbose("Cannot find any solution tool package options in SolutionPackage.AdditionalOptions");
                        }
                    }
                }

                if (result == null)
                {
                    throw new MetaPackException("Can't resolve solution tool package from .SolutionToolPackage, tags and solution package itself");
                }
            }
            else
            {
                MetaPackTrace.Verbose("SolutionToolPackage is preefined by external input.");
                result = SolutionToolPackage;
            }

            return(result);
        }