public XmlDocSource Read(string configPath, string assemblySearchPath)
        {
            var xmlDocSource = new XmlDocSource();
            var config = XDocument.Load(configPath);
            var apiNode = config.XPathSelectElement("configuration/tradingApi");
            var profile = apiNode.XPathSelectElement("profiles").Descendants("profile").First();

            foreach(var dtoAssemblyName in profile.Descendants("dtoAssemblies").Descendants("add").Select(n => n.Attribute("assembly").Value).ToArray())
            {
                xmlDocSource.Dtos.Add(AssemblyWithXmlDocs.CreateFromName(dtoAssemblyName, assemblySearchPath));
            }

            var routeNodes = profile.XPathSelectElement("routes").XPathSelectElements("add").ToList();
            xmlDocSource.Routes = new List<RouteElement>();

            foreach (var item in routeNodes)
            {
                var map = new RouteElement()
                {
                    Endpoint = item.Attribute("endpoint").Value /*+ item.Attribute("pathInfo").Value*/,
                    Name = item.Attribute("name").Value,
                    Type = item.Attribute("type").Value
                };

                xmlDocSource.Routes.Add(map);
            }

            xmlDocSource.RouteAssembly =
                 AssemblyWithXmlDocs.CreateFromName(xmlDocSource.Routes[0].Type.Substring(xmlDocSource.Routes[0].Type.IndexOf(",") + 1).Trim(), assemblySearchPath);

            return xmlDocSource;
        }
Пример #2
0
        public MetadataGenerationResult GenerateJsonSchema(XmlDocSource xmlDocSource)
        {
            var results = new MetadataGenerationResult();

            //Checks that each DTO type can be documented
            // merge canemittype to emitter
            //results.AddValidationResults(new Auditor().AuditTypes(xmlDocSource));

            //Creates Jschema for all DTO types where it can find XML docs
            try
            {
                results.JsonSchema = new JsonSchemaDtoEmitter().EmitDtoJson(xmlDocSource);
            }
            catch (MetadataValidationException e)
            {
                results.MetadataGenerationErrors.Add(new MetadataGenerationError(MetadataType.JsonSchema, typeof(object), e));
            }

            try
            {

                //Checks that DTOs all have valid XML comments
                XmlDocUtils.EnsureXmlDocsAreValid(xmlDocSource);
            }
            catch (MetadataValidationException ex)
            {

                results.MetadataGenerationErrors.Add(new MetadataGenerationError(MetadataType.SMD, typeof(object), new MetadataValidationException(typeof(object), "", ex.Message, "", ex)));
            }

            return results;
        }
Пример #3
0
        public MetadataGenerationResult GenerateJsonSchema(XmlDocSource xmlDocSource)
        {
            var results = new MetadataGenerationResult();


            //Checks that each DTO type can be documented
            // merge canemittype to emitter
            //results.AddValidationResults(new Auditor().AuditTypes(xmlDocSource));

            //Creates Jschema for all DTO types where it can find XML docs
            try
            {
                results.JsonSchema = new JsonSchemaDtoEmitter().EmitDtoJson(xmlDocSource);
            }
            catch (MetadataValidationException e)
            {
                results.MetadataGenerationErrors.Add(new MetadataGenerationError(MetadataType.JsonSchema, typeof(object), e));
            }

            try
            {
                //Checks that DTOs all have valid XML comments
                XmlDocUtils.EnsureXmlDocsAreValid(xmlDocSource);
            }
            catch (MetadataValidationException ex)
            {
                results.MetadataGenerationErrors.Add(new MetadataGenerationError(MetadataType.SMD, typeof(object), new MetadataValidationException(typeof(object), "", ex.Message, "", ex)));
            }

            return(results);
        }
Пример #4
0
        public XmlDocSource Read(string configPath, string assemblySearchPath)
        {
            var xmlDocSource = new XmlDocSource();
            var config       = XDocument.Load(configPath);
            var apiNode      = config.XPathSelectElement("configuration/tradingApi");
            var profile      = apiNode.XPathSelectElement("profiles").Descendants("profile").First();

            foreach (var dtoAssemblyName in profile.Descendants("dtoAssemblies").Descendants("add").Select(n => n.Attribute("assembly").Value).ToArray())
            {
                xmlDocSource.Dtos.Add(AssemblyWithXmlDocs.CreateFromName(dtoAssemblyName, assemblySearchPath));
            }

            var routeNodes = profile.XPathSelectElement("routes").XPathSelectElements("add").ToList();

            xmlDocSource.Routes = new List <RouteElement>();

            foreach (var item in routeNodes)
            {
                var map = new RouteElement()
                {
                    Endpoint = item.Attribute("endpoint").Value /*+ item.Attribute("pathInfo").Value*/,
                    Name     = item.Attribute("name").Value,
                    Type     = item.Attribute("type").Value
                };

                xmlDocSource.Routes.Add(map);
            }


            xmlDocSource.RouteAssembly =
                AssemblyWithXmlDocs.CreateFromName(xmlDocSource.Routes[0].Type.Substring(xmlDocSource.Routes[0].Type.IndexOf(",") + 1).Trim(), assemblySearchPath);

            return(xmlDocSource);
        }
Пример #5
0
 public static void EnsureXmlDocsAreValid(XmlDocSource xmlDocSource)
 {
     foreach (var assembly in xmlDocSource.Dtos.Select(a => a.Assembly))
     {
         foreach (Type type in assembly.GetTypes())
         {
             var doc = type.GetXmlDocs();
             doc.EnsureXmlDocsValid();
         }
     }
 }
Пример #6
0
 public static void EnsureXmlDocsAreValid(XmlDocSource xmlDocSource)
 {
     foreach (var assembly in xmlDocSource.Dtos.Select(a => a.Assembly))
     {
         foreach (Type type in assembly.GetTypes())
         {
             var doc = type.GetXmlDocs();
             doc.EnsureXmlDocsValid();
         }
     }
 }
Пример #7
0
        public MetadataGenerationResult GenerateSmd(XmlDocSource xmlDocSource, JObject jsonSchema)
        {
            MetadataGenerationResult result = new Emitter().EmitSmdJson(xmlDocSource, true, jsonSchema);

            try
            {
                //Checks that services all have valid XML comments
                xmlDocSource.RouteAssembly.AssemblyXML.EnsureXmlDocsValid();
            }
            catch (MetadataValidationException ex)
            {
                result.MetadataGenerationErrors.Add(new MetadataGenerationError(MetadataType.SMD, typeof(object), new MetadataValidationException(typeof(object), "", ex.Message, "", ex)));
            }
            return(result);
        }
Пример #8
0
        public MetadataGenerationResult GenerateSmd(XmlDocSource xmlDocSource, JObject jsonSchema)
        {
            MetadataGenerationResult result = new Emitter().EmitSmdJson(xmlDocSource, true, jsonSchema);
            try
            {

                //Checks that services all have valid XML comments
                xmlDocSource.RouteAssembly.AssemblyXML.EnsureXmlDocsValid();
            }
            catch (MetadataValidationException ex)
            {

                result.MetadataGenerationErrors.Add(new MetadataGenerationError(MetadataType.SMD, typeof(object), new MetadataValidationException(typeof(object), "", ex.Message, "", ex)));
            }
            return result;
        }