Ejemplo n.º 1
0
        private static async Task <WebApiGeneratorModel> GetSchemaTestsGeneratedModel()
        {
            var raml  = await new RamlParser().LoadAsync("files/schematests.raml");
            var model = new WebApiGeneratorService(raml, "TestNs").BuildModel();

            return(model);
        }
        public void ScaffoldToProject(RamlChooserActionParams parameters, Project proj)
        {
            Microsoft.VisualStudio.Shell.ThreadHelper.ThrowIfNotOnUIThread();
            var data = parameters.Data;

            if (data == null || data.RamlDocument == null)
            {
                return;
            }

            var model = new WebApiGeneratorService(data.RamlDocument, parameters.ControllersNamespace, parameters.ModelsNamespace).BuildModel();

            var unitTestsFolderItem = VisualStudioAutomationHelper.AddFolderIfNotExists(proj, UnitTestsFolderName);
            var unitTestsFolderPath = Path.GetDirectoryName(proj.FullName) + Path.DirectorySeparatorChar +
                                      UnitTestsFolderName + Path.DirectorySeparatorChar;

            var templates = new[]
            {
                UnitTestsControllerTemplateName,
                UnitTestsControllerImplementationTemplateName,
                ModelTemplateName,
                EnumTemplateName
            };

            if (!templatesManager.ConfirmWhenIncompatibleServerTemplate(unitTestsFolderPath, templates))
            {
                return;
            }

            var extensionPath = Path.GetDirectoryName(GetType().Assembly.Location) + Path.DirectorySeparatorChar;

            AddOrUpdateUnitTestsControllerBase(parameters, unitTestsFolderPath, model, unitTestsFolderItem, extensionPath);
            AddOrUpdateUnitTestsControllerImplementations(parameters, unitTestsFolderPath, proj, model, unitTestsFolderItem, extensionPath);
        }
Ejemplo n.º 3
0

        
Ejemplo n.º 4
0

        
Ejemplo n.º 5
0

        
Ejemplo n.º 6
0

        
Ejemplo n.º 7
0
        private static async Task <WebApiGeneratorModel> GetRootGeneratedModel()
        {
            var raml  = await new RamlParser().LoadAsync("files/root.raml");
            var model = new WebApiGeneratorService(raml, "TargetNamespace").BuildModel();

            return(model);
        }
Ejemplo n.º 8
0
        public static RamlData GetRamlData(string ramlSource, string targetNamespace)
        {
            try
            {
                var ramlInfo = RamlInfoService.GetRamlInfo(ramlSource);

                if (ramlInfo.HasErrors)
                {
                    MessageBox.Show(ramlInfo.ErrorMessage);
                    return(null);
                }

                var model    = new WebApiGeneratorService(ramlInfo.RamlDocument).BuildModel();
                var filename = Path.GetFileName(ramlSource);
                if (string.IsNullOrWhiteSpace(filename))
                {
                    filename = "source.raml";
                }

                return(new RamlData(model, ramlInfo.RamlContents, filename));
            }
            catch (Exception ex)
            {
                ActivityLog.LogError(VisualStudioAutomationHelper.RamlVsToolsActivityLogSource,
                                     VisualStudioAutomationHelper.GetExceptionInfo(ex));
                var errorMessage = ex.Message;
                if (ex.InnerException != null)
                {
                    errorMessage += " - " + ex.InnerException.Message;
                }

                MessageBox.Show(errorMessage);
                return(null);
            }
        }
Ejemplo n.º 9
0
        private static async Task <WebApiGeneratorModel> GetAdditionalPropertiesGeneratedModel()
        {
            var raml  = await new RamlParser().LoadAsync("files/additionalprops.raml");
            var model = new WebApiGeneratorService(raml, "TargetNamespace").BuildModel();

            return(model);
        }
Ejemplo n.º 10
0
        private static async Task <WebApiGeneratorModel> GetOrdersXmlGeneratedModel()
        {
            var raml  = await new RamlParser().LoadAsync("files/ordersXml.raml");
            var model = new WebApiGeneratorService(raml, "OrdersXml").BuildModel();

            return(model);
        }
Ejemplo n.º 11
0
        private static async Task <WebApiGeneratorModel> GetBoxGeneratedModel()
        {
            var raml  = await new RamlParser().LoadAsync("box.raml");
            var model = new WebApiGeneratorService(raml).BuildModel();

            return(model);
        }
Ejemplo n.º 12
0

        
Ejemplo n.º 13
0

        
Ejemplo n.º 14
0

        
        private static async Task <WebApiGeneratorModel> BuildModel(string ramlFile)
        {
            //var fi = new FileInfo(ramlFile);
            var raml  = await new AmfParser().Load(ramlFile);
            var model = new WebApiGeneratorService(raml, "TargetNamespace", "TargetNamespace.Models").BuildModel();

            return(model);
        }
Ejemplo n.º 16
0
        private async Task <WebApiGeneratorModel> GetLargeGeneratedModel()
        {
            var raml = await new RamlParser().LoadAsync("files/large.raml");

            var model = new WebApiGeneratorService(raml, "TestNs").BuildModel();

            return(model);
        }
Ejemplo n.º 17
0
        private static async Task <WebApiGeneratorModel> BuildModel(string ramlFile)
        {
            var fi    = new FileInfo(ramlFile);
            var raml  = await new RamlParser().LoadAsync(fi.FullName);
            var model = new WebApiGeneratorService(raml, "TargetNamespace").BuildModel();

            return(model);
        }
Ejemplo n.º 18
0
        private async Task <WebApiGeneratorModel> GetRegressionGeneratedModel()
        {
            var raml = await new RamlParser().LoadAsync("regression.raml");

            var model = new WebApiGeneratorService(raml).BuildModel();

            return(model);
        }
Ejemplo n.º 19
0
        private async Task <WebApiGeneratorModel> BuildModel(string ramlFile)
        {
            IncrementTestCount();
            //var fi = new FileInfo(ramlFile);
            var raml  = await new RamlParser().Load(ramlFile);
            var model = new WebApiGeneratorService(raml, "TargetNamespace", "TargetNamespace.Models").BuildModel();

            return(model);
        }
Ejemplo n.º 20
0
        private async Task <WebApiGeneratorModel> BuildModel(string ramlFile)
        {
            IncrementTestCount();
            var path     = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase.Replace("file:///", string.Empty));
            var fullPath = Path.Combine(path + "\\", ramlFile.Replace("/", "//"));
            var fi       = new FileInfo(fullPath);
            var raml     = await new RamlParser().Load(fi.FullName);
            var model    = new WebApiGeneratorService(raml, "TargetNamespace", "TargetNamespace.Models").BuildModel();

            return(model);
        }
Ejemplo n.º 21
0
        public void Generate()
        {
            var model = new WebApiGeneratorService(ramlDoc, targetNamespace, targetNamespace + ".Models").BuildModel();

            var models = model.Objects;

            // when is an XML model, skip empty objects
            if (models.Any(o => !string.IsNullOrWhiteSpace(o.GeneratedCode)))
            {
                models = models.Where(o => o.Properties.Any() || !string.IsNullOrWhiteSpace(o.GeneratedCode));
            }

            models    = models.Where(o => !o.IsArray || o.Type == null); // skip array of primitives
            models    = models.Where(o => !o.IsScalar);                  // skip scalars
            hasModels = models.Any();

            GenerateModels(model.Objects);
            GenerateEnums(model.Enums);
            GenerateInterfaceControllers(model.Controllers);
            GenerateBaseControllers(model.Controllers);
            GenerateImplementationControllers(model.Controllers);
        }
        public void Should_Inherit_Uri_Parameters_When_Nested_Resources_Case2()
        {
            var doc = new RamlDocument {
                Title = "test"
            };

            var uriParameters1 = new Dictionary <string, Parameter>
            {
                {
                    "id", new Parameter
                    {
                        DisplayName = "id",
                        Type        = "integer"
                    }
                }
            };

            var uriParameters2 = new Dictionary <string, Parameter>
            {
                {
                    "current", new Parameter
                    {
                        DisplayName = "current",
                        Type        = "boolean"
                    }
                }
            };

            var methods = new List <Method>
            {
                new Method
                {
                    Verb = "get"
                }
            };

            var resources = new Collection <Resource>
            {
                new Resource
                {
                    RelativeUri   = "/{id}",
                    Methods       = methods,
                    UriParameters = uriParameters1,
                    Resources     = new Collection <Resource>
                    {
                        new Resource
                        {
                            RelativeUri = "/something",
                            Methods     = methods,
                            Resources   = new Collection <Resource>
                            {
                                new Resource
                                {
                                    RelativeUri   = "/{current}",
                                    Methods       = methods,
                                    UriParameters = uriParameters2,
                                    Resources     = new Collection <Resource>
                                    {
                                        new Resource
                                        {
                                            RelativeUri = "/deep",
                                            Methods     = methods
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            };

            doc.Resources = resources;

            var service = new WebApiGeneratorService(doc, "TargetNamespace");
            var model   = service.BuildModel();

            Assert.AreEqual("bool", model.Controllers.First().Methods.First(m => m.Name.Contains("Deep")).UriParameters.First(p => p.Name == "current").Type);
            Assert.AreEqual("int", model.Controllers.First().Methods.First(m => m.Name.Contains("Deep")).UriParameters.First(p => p.Name == "id").Type);
        }
        public void Scaffold(string ramlSource, RamlChooserActionParams parameters)
        {
            var data = parameters.Data;

            if (data == null || data.RamlDocument == null)
            {
                return;
            }

            var model = new WebApiGeneratorService(data.RamlDocument, parameters.ControllersNamespace, parameters.ModelsNamespace).BuildModel();

            var dte  = ServiceProvider.GetService(typeof(SDTE)) as DTE;
            var proj = VisualStudioAutomationHelper.GetActiveProject(dte);

            var contractsFolderItem = VisualStudioAutomationHelper.AddFolderIfNotExists(proj, ContractsFolderName);
            var ramlItem            =
                contractsFolderItem.ProjectItems.Cast <ProjectItem>()
                .First(i => i.Name.ToLowerInvariant() == parameters.TargetFileName.ToLowerInvariant());
            var contractsFolderPath = Path.GetDirectoryName(proj.FullName) + Path.DirectorySeparatorChar +
                                      ContractsFolderName + Path.DirectorySeparatorChar;

            var templates = new[]
            {
                ControllerBaseTemplateName,
                ControllerInterfaceTemplateName,
                ControllerImplementationTemplateName,
                ModelTemplateName,
                EnumTemplateName
            };

            if (!templatesManager.ConfirmWhenIncompatibleServerTemplate(contractsFolderPath, templates))
            {
                return;
            }

            var extensionPath = Path.GetDirectoryName(GetType().Assembly.Location) + Path.DirectorySeparatorChar;

            AddOrUpdateModels(parameters, contractsFolderPath, ramlItem, model, contractsFolderItem, extensionPath);

            AddOrUpdateEnums(parameters, contractsFolderPath, ramlItem, model, contractsFolderItem, extensionPath);

            AddOrUpdateControllerBase(parameters, contractsFolderPath, ramlItem, model, contractsFolderItem, extensionPath);

            AddOrUpdateControllerInterfaces(parameters, contractsFolderPath, ramlItem, model, contractsFolderItem, extensionPath);

            AddOrUpdateControllerImplementations(parameters, contractsFolderPath, proj, model, contractsFolderItem, extensionPath);

            AddJsonSchemaParsingErrors(model.Warnings, contractsFolderPath, contractsFolderItem, ramlItem);

            if (parameters.GenerateUnitTests.HasValue && parameters.GenerateUnitTests.Value)
            {
                var testsProj = VisualStudioAutomationHelper.GetProject(dte, parameters.TestsProjectName);

                parameters.TestsNamespace = VisualStudioAutomationHelper.GetDefaultNamespace(testsProj) + "." +
                                            NetNamingMapper.GetObjectName(Path.GetFileNameWithoutExtension(parameters.RamlFilePath));

                var unitTestsScaffoldService = UnitTestsScaffoldServiceBase.GetScaffoldService(Microsoft.VisualStudio.Shell.ServiceProvider.GlobalProvider);
                unitTestsScaffoldService.InstallDependencies(testsProj);
                unitTestsScaffoldService.ScaffoldToProject(parameters, testsProj);
            }
        }